Tuyên bố sau có đúng không, hoặc tôi có thiếu gì đó không?đối tượng được trả về từ NSJSONSerialization có thể thay đổi
Bạn cần phải kiểm tra các đối tượng trở lại của NSJSONSerialization
để xem nếu nó là một từ điển hoặc một mảng - bạn có thể có
data = {"name":"joe", "age":"young"}
// NSJSONSerialization returns a dictionary
và
data = {{"name":"joe", "age":"young"},
{"name":"fred", "age":"not so young"}}
// returns an array
Mỗi loại có một phương pháp truy cập khác nhau mà phá vỡ nếu sử dụng sai. Ví dụ:
NSMutableArray *jsonObject = [json objectAtIndex:i];
// will break if json is a dictionary
vì vậy bạn phải làm điều gì đó giống như -
id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers error:&error];
if ([jsonObjects isKindOfClass:[NSArray class]])
NSLog(@"yes we got an Array"); // cycle thru the array elements
else if ([jsonObjects isKindOfClass:[NSDictionary class]])
NSLog(@"yes we got an dictionary"); // cycle thru the dictionary elements
else
NSLog(@"neither array nor dictionary!");
tôi đã có một cái nhìn tốt thru stack overflow và tài liệu hướng dẫn của Apple và những nơi khác và không thể tìm thấy bất kỳ xác nhận trực tiếp những điều trên .
Bạn không đề cập đến vấn đề đang xảy ra với mã của mình. –
Vấn đề là nếu bạn nhận được một từ điển trở lại và sử dụng một phương pháp mảng để truy cập nó một ngoại lệ được ném. Tôi nghĩ rằng bạn cần phải kiểm tra kiểu đối tượng trả về để sửa lỗi này, nhưng muốn xác nhận rằng đây là cách chính xác để làm điều đó. – user1705452