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