0

我对 UITableView 和 StackMob SDK 最新版本有奇怪的行为。

我正在尝试在表格中显示用户列表。我的请求代码,如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;
}

我发现的其他链接:1 , 2 , 3

4

1 回答 1

0

我认为缓慢的原因是每个新单元的创建都必须等待与服务器的连接才能获取“用户名”。我认为最好的解决方案是更新到 2.0 SDK(如果您还没有使用它)。并启用缓存,请参阅此处了解详细信息。这样,初始获取将使用用户名对象填充缓存,并且每次调用 cellForRowAtIndexPath 中的 NSManagedObject 都不会导致网络请求。

于 2013-06-25T03:15:38.490 回答