我有以下代码用于从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文件并且它正常工作。
答案 0 :(得分:1)
在使用它之前检查可变数组是否为alloc init。
答案 1 :(得分:0)
你是否在任何地方创建了一个新的空可变数组?如果不这样做,那么addObject将不会做任何事情。
答案 2 :(得分:-1)
在序列化数组或字典格式的数据之后,你必须检查你得到的数据类型。还要在解析之前检查json响应格式....
还有一个建议是尝试" Key for Key"而不是键的对象
NSMutableAray *arry= [governorateJson
valueForKey:@"gouvernorats"];