JSON对象的NSArray

我有以下从服务器的JSON响应:JSON对象的NSArray

{ 

"theSet": [

],

"Identifikation": 1,

"Name": "Casper",

"Adress": "Lovis 23",

"Location": "At home",

"Information": "The first, the second and the third",

"Thumbnail": "none",

}

我检索数据,像这样:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 

NSLog(@"connectionDidFinishLoading");

NSLog(@"Succeeded! Received %d bytes of data",[data length]);

NSError *myError = nil;

NSDictionary *res = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&myError];

news = [NSArray arrayWithObjects:[res allKeys], [res allValues], nil];

NSLog(@"%@", news);

//[mainTableView reloadData];

}

然后我想插入所有JSON数据成数组,所以我可以在我的tableview中显示数据。

我的实现代码如下代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

{

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];

if(cell == nil){

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"];

}

cell.textLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"Name"];

cell.detailTextLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"Adress"];

return cell;

}

但我的应用程序崩溃与错误:

-[__NSArrayI objectForKey:]: unrecognized selector sent to instance. 

我怎样才能插入JSON对象到一个NSArray,所以我可以在我的tableview显示呢?

回答:

我发现了一个简单的解决方案我自己,适合我的项目好:

我只是做了以下内容:

NSDictionary *res = [NSJSONSerialization JSONObjectWithData:data options:0 error:&myError]; 

NSArray news = [NSArray arrayWithObject:res];

,并与我可以使用下面的代码显示JSON内容在我的桌面视图。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

{

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];

if(cell == nil){

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"];

}

cell.textLabel.text = [[news objectAtIndex:indexPath.row] valueForKey:@"name"];

cell.detailTextLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"Location"];

return cell;

}

回答:

编辑:

我再次审查你的代码,我以前回答错了。

当生成您的news时,您将2个NSArray对象放入其中。第一个包含所有键,第二个包含JSON中的所有值。

为了显示每个对象在你的JSON的名字,你应该简单地做

news = [res allKeys]; 

jsonResult = res;

//保存您的JSON,如果你想使用的值!

注意它们将是无序的。 在你的细胞,你可以这样做:

NSString *key = [news objectAtIndex:indexPath.row]; 

cell.textLabel.text = key;

id object = [jsonResult valueForKey:key];

cell.detailTextLabel.text = // do something depending on your json type which can have different values

回答:

的错误你有

[__NSArrayI objectForKey:]: unrecognized selector sent to instance.

告诉你需要知道的一切。

这就是NSArray不明白objectForKey。如果你阅读苹果提供的documentation,你会看到这个。

您的代码

cell.textLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"Name"];

期待的news NSArray的返回,响应objectForKey对象 - 最有可能的NSDictionary。您提取您的JSon数据的代码

NSDictionary *res = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&myError]; 

news = [NSArray arrayWithObjects:[res allKeys], [res allValues], nil];

仅取出所有字典并将其提取到数组中。

你需要看看你的代码的这些行 - 这是你出错的地方。

看看和它链接到的相关示例代码。

以上是 JSON对象的NSArray 的全部内容, 来源链接: utcz.com/qa/265554.html

回到顶部