用 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:,因此请从这两个开始,并在进行任何其他自定义之前将数据显示在表格上。

【讨论】:

将其存储在其他地方是指定义一个字典 instaan​​de 变量?【参考方案2】:

在 NSDictionary 中获取数据后,将其保存在 NSArray 中,其中填充了您要显示的 NSString 对象,然后调用函数 [Tableview reloadData];在你的 ViewDidLoad 功能和你的好去。

【讨论】:

以上是关于用 JSON 数据填充 UITableView 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何用 ASIHttpRequest JSON 数据填充 UITableView?

用来自 JSON Request iOS 的字典填充 UITableView

如何在Objective-C中加载数据期间异步加载JSON数据并填充UITableView

iPhone 用 JSON 结果填充 UITableView(使用在 UISearchBar 中输入的搜索)

UITableView 中未加载 JSON 数据

无法使用 json 数据填充 UITableview