2013-06-24 90 views
0

我有奇怪的行爲與UITableView和StackMob SDK的最後版本。StackMob&UITableView滯後

我試圖顯示錶中的用戶列表。我請求代碼就像this tutorial由StackMob:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

// Edit the entity name as appropriate. 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entity]; 

// Edit the sort key as appropriate. 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"username" ascending:YES]; 
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil]; 
[fetchRequest setSortDescriptors:sortDescriptors]; 

[self.managedObjectContext executeFetchRequest:fetchRequest onSuccess:^(NSArray *results) { 
    [self.refreshControl endRefreshing]; 
    self.objects = results; 
    [self.tableView reloadData]; 
} onFailure:^(NSError *error) { 
    [self.refreshControl endRefreshing]; 
    NSLog(@"An error %@, %@", error, [error userInfo]); 
}]; 

然後

- (UITableViewCell *)tableView:cellForRowAtIndexPath: 

SDK的每個呼叫後發送請求到服務器

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    NSManagedObject *object = [self.objects objectAtIndex:indexPath.row]; 
    cell.textLabel.text = [object valueForKey:@"username"]; 
    return cell; 
} 

我發現其他鏈接:123

回答

0

I認爲緩慢的原因是每個新的單元創建都必須等待連接到服務器才能獲取「用戶名」。我認爲最好的解決方案是更新到2.0 SDK(如果你還沒有使用它)。並啓用緩存,請參閱here瞭解詳細信息。這樣,初始獲取將使用用戶名對象填充緩存,並且每次調用cellForRowAtIndexPath中的NSManagedObject都不會導致網絡請求。