【问题标题】:Unable to populate NSMutableArray from JSON file无法从 JSON 文件填充 NSMutableArray
【发布时间】:2016-03-24 07:32:34
【问题描述】:

我有以下代码,用于从 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 文件,它工作正常。

【问题讨论】:

  • 您的NSLog 声明得到了什么?您是否获得了预期的数据返回?
  • 我有 0 个元素

标签: ios objective-c json nsmutablearray


【解决方案1】:

在使用它之前检查可变数组是否正在分配初始化。

【讨论】:

  • 谢谢@Akshay,我好像忘了分配数组
【解决方案2】:

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

【讨论】:

  • 这是评论,不是答案。
【解决方案3】:

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

另一个建议是尝试“键的值”而不是键的对象

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

【讨论】:

  • 绝对不要使用 valueForKey。阅读它的文档,然后告诉我们你为什么要使用这个怪物。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多