Ошибка в JSON или написание словаря - PullRequest
0 голосов
/ 26 июня 2010

Я получаю ошибку followig после преобразования JSON echo в словарь,

* Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «* - [NSMutableArray insertObject: atIndex:]: попытка вставить нулевой объект в 0» *** стек вызовов при первом броске:

Вот мой код десериализации JSON, ранее я использовал эту модель для простого списка. Теперь я посылаю более сложное эхо (с объектами и ключами), и оно вылетает.

    NSURL *url = [NSURL URLWithString:@"http://10.0.1.8/~imac/iphone/jsontest.php"];
    NSString *jsonreturn = [[NSString alloc] initWithContentsOfURL:url];

    NSLog(jsonreturn); // Look at the console and you can see what the results are

    NSData *jsonData = [jsonreturn dataUsingEncoding:NSUTF32BigEndianStringEncoding];
    NSError *error = nil;

    NSDictionary * dict = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];

    if (dict)
    {
        rowsArray = [dict objectForKey:@"member"];
        [rowsArray retain];
    }


    NSLog(@"Array: %@",rowsArray);
    NSLog(@"count is: %i", [self.rowsArray count]);


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *choiceR = [documentsDirectory stringByAppendingPathComponent:@"FollowingArray"];
    NSMutableArray *array = [[NSMutableArray alloc] init];

    [array addObject:rowsArray];
    [array writeToFile:choiceR atomically:YES];
    [array release];

    [jsonreturn release];

Вот фрагмент эха:

{"member":[
{"userid":"18",
"firstname":"Frank",
"lastname":"Johnson",
"profile":{"school":"7","grade":"12","teacher"}
},
{"userid":"38",
"firstname":"maggy",
"lastname":"Johnson",
"profile":{"school":"7","grade":"12","teacher"}
 }]}

Я предполагаю, что получаю сбой, потому что массив пуст. Любые идеи, если эхо вызывает сбой или есть инструкция в JSON для обработки ключей и объектов такого типа, возвращаются.

Спасибо, Michael

1 Ответ

0 голосов
/ 26 июня 2010

Вы передаете NSDictonary в rowArray, поскольку ваши данные JSON кажутся словарём, вложенным в словарь.Так что я бы предположил, что это приводит к тому, что rowArray будет пустым, и произойдет сбой при попытке добавить его в изменяемый массив.

...