我正在编写一个 iOS 应用程序,它从 web 服务加载数据并将数据放入表视图中。用户可以通过单击单元格然后选择一个值来更新单元格中的数据。选择该值后,我希望表更新以反映新数据,实质上是重新从 web 服务进行数据的初始下载。在更新方法结束时,我调用了我的初始加载方法,但这似乎不起作用。它只是重新加载所有原始数据。这是我的更新方法的结尾:
self.connectionInProgress = [[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];
[self loadLines];
和负载线方法:
- (void)loadLines
{
NSLog(@"going again?");
[Results removeAllObjects];
[Results release];
Results = nil;
Results = [[NSMutableArray alloc] init];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
NSString *jsonString = [self performFetchWithURL:lineURL];
if(jsonString == nil) {
[self showNetworkError];
return;
}
NSDictionary *dictionary = [self parseJSON:jsonString];
if(dictionary == nil) {
dispatch_async(dispatch_get_main_queue(), ^{
[self showNetworkError];
});
return;
}
[self parseDictionary:dictionary];
dispatch_async(dispatch_get_main_queue(), ^{
isLoading = NO;
[self.tableView reloadData];
});
});
}
parseDictionary 和 performFetchWithURL 是 iOS 5 中非常标准的 JSON 交互...将数据放入 Results 数组中。我是否通过清除我的结果数组然后重新创建它来做正确的事情?
我将如何获得全新的数据?