CoreData对象没有被删除

时间:2013-02-20 14:16:53

标签: core-data restkit

在iOS6应用程序中,我使用CoreData从DB获取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];

1 个答案:

答案 0 :(得分:0)

好的,我从来没有真正使用过你的方法所以我不会说这是错的,但我会说这很奇怪。我猜联系人是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;

尝试一下,希望有所帮助