gpt4 book ai didi

core-data - CoreData 对象没有出现故障

转载 作者:行者123 更新时间:2023-12-02 20:45:43 24 4
gpt4 key购买 nike

在 iOS6 应用程序中,我使用 CoreData 从数据库中获取 NSManagedObjects 并将它们显示在 tableViewCell 中。我的问题是,与初始滚动位置之外的单元相对应的所有对象都处于故障状态并且不会恢复活力。我看不到我的错误。

fetchRequest.returnsObjectsAsFaults = NO;有帮助,但我想要一个干净的解决方案。

这是代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ContactsCell";
ContactsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

Contact *contact = [self.contacts objectAtIndex:indexPath.row];

//here some contacts are faulted. contact.name is null if I fetch it

[cell setContactData:contact];

return cell;
}

这是我获取的方式(使用 Restkit 0.10.3):

 NSFetchRequest *fetchRequest = [Contact fetchRequest];
fetchRequest.sortDescriptors = [self sortDescriptors];
fetchRequest.returnsObjectsAsFaults = NO;
return [Contact objectsWithFetchRequest:fetchRequest];

最佳答案

好吧,我从来没有真正使用过你的方法,所以我不会说它是错误的,但我会说它很奇怪。我猜Contact是NSManagedObject的子类,我可以相信它知道他最初提取的提取请求,并且他知道他被提取的上下文,但只有在他已经被提取之后。我真的不明白如果他以前从未从持久性存储中获取过,他怎么可能知道这些事情。所以我建议你使用经典的executeFetch或fetchedResultsController来填充你的tableView。

NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init]; 
[context setPersistentStoreCoordinator:persistentStoreCoordinator];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:context];
fetchRequest.entity = entity;
fetchRequest.sortDescriptors = [self sortDescriptors];
NSArray *array = [context executeFetchRequest:fetchRequest error:&error];
return array;

尝试一下,希望有帮助

关于core-data - CoreData 对象没有出现故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14982024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com