无法从 JSON 文件填充 NSMutableArray
Unable to populate NSMutableArray from JSON file
我有以下代码用于从 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 文件并且工作正常。
在使用可变数组之前检查是否正在分配初始化。
你必须检查序列化数组或字典格式的数据后得到的数据类型。还要检查 json 解析前的响应格式....
另一个建议是尝试 "Value for Key " 而不是 object 作为 key
NSMutableAray *arry= [governorateJson
valueForKey:@"gouvernorats"];
您是否在任何地方创建了一个新的空可变数组?如果您不这样做,那么 addObject 将不会执行任何操作。
我有以下代码用于从 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 文件并且工作正常。
在使用可变数组之前检查是否正在分配初始化。
你必须检查序列化数组或字典格式的数据后得到的数据类型。还要检查 json 解析前的响应格式....
另一个建议是尝试 "Value for Key " 而不是 object 作为 key
NSMutableAray *arry= [governorateJson
valueForKey:@"gouvernorats"];
您是否在任何地方创建了一个新的空可变数组?如果您不这样做,那么 addObject 将不会执行任何操作。