json填充表视图控制器不会工作

时间:2014-04-02 14:18:43

标签: ios objective-c json cocoa-touch

我一直在youtube上关于如何将数据库中的外部数据加载到iOS应用程序上。我理解这个概念以及它是如何工作的等等。但即使我正在关注视频并且在线查看它似乎是一个常见的错误,我也有错误。

- (void) retrieveData
{
NSURL * url = [NSURL URLWithString: getDataURL];
NSData * data = [NSData dataWithContentsOfURL:url];

jsonArray = [NSJSONSerialization JSONObjectWithData: data  options:kNilOptions error:nil];

//set up our cities array
citiesArray = [[NSMutableArray alloc] init];

// loop through our json array
for (int i =0; i< jsonArray.count; i++)
{
    //create our city object
    NSString * cID = [[jsonArray objectAtIndex:i] objectForKey:@"id"];
    NSString * cName = [[jsonArray objectAtIndex:i] objectForKey:@"cityName"];
    NSString * cState = [[jsonArray objectAtIndex:i] objectForKey:@"cityState"];
    NSString * cPopulation = [[jsonArray objectAtIndex:i] objectForKey:@"cityPopulation"];
    NSString * cCountry = [[jsonArray objectAtIndex:i] objectForKey:@"country"];

    // Add the city object to our cities array
   [citiesArray addObject:[[City alloc]initWithCityName:cName andCityState:cState andCityCountry:cCountry andCityPopulation:cPopulation andCityID:cID]];

}
//reload our table view
[self.tableView reloadData];

}

代码在第三行失败。

jsonArray = [NSJSONSerialization JSONObjectWithData: data  options:kNilOptions error:nil];

为什么?有什么建议? jsonArray已经创建,所以我无法理解为什么它不起作用。

1 个答案:

答案 0 :(得分:0)

我检查了你的代码&amp;我不认为有任何错误。

我希望您在标题(.h)文件中声明NSMutableArray *jsonArray

  • 如果你在第一行收到错误:

    jsonArray = [NSJSONSerialization JSONObjectWithData:数据选项:kNilOptions错误:nil]; 比用简单的nil替换kNilOptions。

  • 如果因为nil数据而导致崩溃。在这种情况下,您必须在将数据存储在数组之前放置条件,如下所示:

if(data!= nil) {

   jsonArray = [NSJSONSerialization JSONObjectWithData: data  options:nil error:nil];}

希望它能提供帮助。