用 JSON 数据填充 UITableView 不起作用
Posted
技术标签:
【中文标题】用 JSON 数据填充 UITableView 不起作用【英文标题】:filling UITableView with JSON data won't work 【发布时间】:2012-03-21 20:32:20 【问题描述】:我遇到了这个问题。我正在尝试使用来自使用 NSJSONSerialization 制作的 JSON 字典中的数据构建 UITableView。我不知道从哪里开始。我已经尝试了 3 天,但筒仓一无所获。这是我想出的代码:
#define kBgQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
#define kJsonURL [NSURL URLWithString: @"http://rs-hosting.nl/panel/serverstatus_json.php"]
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad
[super viewDidLoad];
dispatch_async(kBgQueue, ^
NSData* data = [NSData dataWithContentsOfURL:kJsonURL];
[self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
);
- (void)fetchedData:(NSData *)responseData
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSDictionary *clients = [json objectForKey:@"announcements"];
NSArray *announcements = [clients objectForKey:@"announcement"];
NSDictionary* announcement = [announcements objectAtIndex:1];
- (void)viewDidUnload
[super viewDidUnload];
@end
我能够在标签中的单个视图上显示标签中的内容,但我不知道如何将 json 中的所有数据添加到表中。有人能帮我治好吗?
SDK:5.1 OSX:10.7.3 XCODE:4.3.1
提前发送
【问题讨论】:
【参考方案1】:您需要将数据存储在某个地方(将 NSDictionary 与整个 json 文件一起保存就可以了),然后添加一个 UITableView,将其设置为将其数据源指向您的类,然后将 UITableViewDataSource methods 实现为概述。
UITableView 将在填充表格时从这些方法请求数据。唯一需要的两个方法是tableView:numberOfRowsInSection:
和tableView:cellForRowAtIndexPath:
,因此请从这两个开始,并在进行任何其他自定义之前将数据显示在表格上。
【讨论】:
将其存储在其他地方是指定义一个字典 instaande 变量?【参考方案2】:在 NSDictionary 中获取数据后,将其保存在 NSArray 中,其中填充了您要显示的 NSString 对象,然后调用函数 [Tableview reloadData];在你的 ViewDidLoad 功能和你的好去。
【讨论】:
以上是关于用 JSON 数据填充 UITableView 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何用 ASIHttpRequest JSON 数据填充 UITableView?
用来自 JSON Request iOS 的字典填充 UITableView
如何在Objective-C中加载数据期间异步加载JSON数据并填充UITableView