无法从JSON文件填充NSMutableArray

时间:2016-03-24 07:32:34

标签: ios objective-c json nsmutablearray

我有以下代码用于从JSON文件填充NSMutableArray,以便将其用作CollectionView的数据源:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"governorates" ofType:@"json"];
NSData *content = [[NSData alloc] initWithContentsOfFile:filePath];
NSDictionary *governorateJson = [NSJSONSerialization JSONObjectWithData:content options:kNilOptions error:nil];
NSArray *govNSArray = [governorateJson objectForKey:@"gouvernorats"];
if ([govNSArray isKindOfClass:[NSArray class]]){
    for (NSDictionary *dictionary in govNSArray) {
        Governorate *govModel = [Governorate new] ;
        govModel.govID = [dictionary objectForKey:@"id"];
        govModel.govNameAr = [[dictionary objectForKey:@"nom"] objectForKey:@"ar"];
        govModel.govNameFr = [[dictionary objectForKey:@"nom"] objectForKey:@"fr"];
        [self.governoratesArray addObject:govModel];
        [self.governoratesString addObject:govModel.govNameAr];
        NSLog(@"Count: %lu", (unsigned long) self.governoratesString.count);
    }
    NSLog(@"Total Count: %lu", (unsigned long) self.governoratesString.count);
}

问题是NSMutableArray似乎总是空的,我在另一个地方使用完全相同的代码并使用相同的JSON文件并且它正常工作。

3 个答案:

答案 0 :(得分:1)

在使用它之前检查可变数组是否为alloc init。

答案 1 :(得分:0)

你是否在任何地方创建了一个新的空可变数组?如果不这样做,那么addObject将不会做任何事情。

答案 2 :(得分:-1)

在序列化数组或字典格式的数据之后,你必须检查你得到的数据类型。还要在解析之前检查json响应格式....

还有一个建议是尝试" Key for Key"而不是键的对象

 NSMutableAray *arry= [governorateJson      
     valueForKey:@"gouvernorats"];