我在數據的getter方法中將數據異步加載到數組。異步數據加載和重新加載之間的時間間隔UITableView
首先它產生一個空數組,所以自然我的表加載0行。
當數據完成加載後,我打電話reloadData
來更新我的表格,但是,下載的數據和顯示數據的UITableView
之間似乎有約6秒的間隔。
有誰知道這可能發生的任何原因?
我使用dispatch_async
方法,優先級爲高。
我甚至在加載數據和插入數據的過程中記錄了每個點,它顯示了這一點。另外,如果我在上載和下載數據時一直上下滾動表格,表格會盡快顯示其數據,而不是在插入之間存在此差距。
代碼:
- (NSMutableDictionary *)tableDictionary {
if (!_tableDictionary) {
_tableDictionary = [NSMutableDictionary dictionary];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
NSString *URLString = @"http://www.urlToData.com/path/to/file.php?foo=bar";
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:URLString]];
NSError *error = nil;
NSDictionary *objectIDs = [NSJSONSerialization JSONObjectWithData:data options:NSJSONWritingPrettyPrinted error:&error];
NSMutableDictionary *objects = [NSMutableDictionary dictionary];
for (NSInteger i = 0; i < objectIDs.allValues.count; i++) {
NSArray *eventIDs = (objectIDs.allValues)[i];
NSString *eventType = (objectIDs.allKeys)[i];
[objects setValue:[myObject initWithIDs:objectIDs] forKey:@"key"];
}
self.tableDictionary = objects;
self.titlesForSectionHeader = objects.allKeys;
NSLog(@"Done");
[self.tableView reloadData];
});
}
return _tableDictionary;
}
你可以發表一些頌歌嗎? – ElasticThoughts
添加上面的代碼 –
在主線程上重新載入tableView的數據。 – danielbeard