我正在研究Objective-C中的第一个JSON示例,并且遇到了我试图重现的this伟大教程。在此过程中,我决定将JSON返回到我已经工作的tableView中(只是为了确保我可以在视图中执行某些操作)。你可以在“connectionDidFinishLoading”中设置tableView数据源的值吗?
- (void)viewDidLoad {
[super viewDidLoad];
responseData = [[NSMutableData data] retain];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.unpossible.com/misc/lucky_numbers.json"]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
[responseData release];
NSArray *luckyNumbers = [responseString JSONValue];
NSMutableString *text = [NSMutableString stringWithString:@"Nums "];
for (int i = 0; i < [luckyNumbers count]; i++)
[text appendFormat:@"%@", [luckyNumbers objectAtIndex:i]];
self.movies = [[NSArray alloc] initWithObjects:@"First", text, @"Last", nil];
}
什么我发现是,当我在“connectionDidFinishLoading”设置数组它显示为没有在运行的应用程序 - 但如果我直接在“viewDidLoad中”方法与3个简单的字符串值设置此它显示很好。
当我调试运行的应用程序时,我看到JSON响应和字符串看起来有效(没有问题,我可以看到)。
在这个“connectionDidFinishLoading”方法之前,我的tableView的数据源是否已经设置好了,或者我错过了什么?