Обновление: Я только что проверил свой формат JSON, возвращенный с сервера, используя JSONlint , и все в порядке.
Я получаю исключение с NSJSONSerialization при вызове AFNetworking для сценария php, который возвращает данные JSON. Я посмотрел другие вопросы с той же проблемой и попробовал эти решения, но все еще получаю сообщение об ошибке.
В этой строке вылетает:
NSError *e = nil;
NSMutableArray *jsonArray =
[NSJSONSerialization JSONObjectWithData: jsonData
options: NSJSONReadingMutableContainers
error: &e];
Журнал ошибок:
2012-03-19 18: 10: 41.291 imageUploader [3538: 207] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [__ NSCFArray bytes]: нераспознанный селектор отправлен в экземпляр 0x6867430'
Мои данные JSON, когда я вызываю php-скрипт через браузер, выглядят так:
[{ "пользователь": "Бинка", "путь": "Binky-0a96f9aab5267c8.jpg", "Индекс": "101"}, { "пользователь": "Бинка", "путь": "binky- 9cf844252c28553.jpg», "индекс": "102"}, { "пользователь": "Бинка", "путь": "Binky-d6c749d25d33015.jpg", "индекс": "103"}] * * тысяча двадцать-семь
NSLog данных выглядит так:
(
{
индекс = 101;
путь = "binky-0a96f9aab5267c8.jpg";
пользователь = binky;
},
{
индекс = 102;
путь = "binky-9cf844252c28553.jpg";
пользователь = binky;
},
{
индекс = 103;
путь = "binky-d6c749d25d33015.jpg";
пользователь = binky;
})
Наконец, я делаю тест, чтобы убедиться, что у меня есть действительные данные JSON:
if ([NSJSONSerialization isValidJSONObject: jsonData]){
NSLog(@"Good JSON \n");
}
Так что я не могу понять, где источник моей ошибки. Маленькая помощь?
// Операция AFNetworking + блок
AFJSONRequestOperation *operation =
[AFJSONRequestOperation JSONRequestOperationWithRequest:myRequest
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id jsonData) {
NSLog(@"Success JSON data:\n %@ \n", jsonData); //log data
if ([NSJSONSerialization isValidJSONObject: jsonData]){
NSLog(@"Good JSON \n");
}
NSError *e = nil;
NSMutableArray *jsonArray = [NSJSONSerialization JSONObjectWithData: jsonData options: NSJSONReadingMutableContainers error: &e];
if (!jsonArray) {
NSLog(@"Error parsing JSON: %@", e);
} else {
for(NSDictionary *item in jsonArray) {
NSLog(@"Item: %@", item);
}
}
[self.navigationController popToRootViewControllerAnimated:YES];
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"Error: %@", error);
[self.navigationController popToRootViewControllerAnimated:YES];
}];