小编jbo*_*vet的帖子

NSFetchedResultsController缺少一些对象

我面临一个奇怪的问题,一个NSFRC fetchedObjects数组返回的不是它应该的所有对象.为了给你一些上下文,我的应用程序有几个列表视图控制器,每个控制器都有一个NSFRC.我正在更新委托方法controllerDidChangeContent中的列表视图.我面临的问题是:在将对象存储在后台MOC并保存之后,调用controllerDidChangeContent但是我刚刚保存在后台线程中的对象没有出现在NSFRC中.这是我用来检查这个代码的一段代码:

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
    NSManagedObjectContext *context = controller.managedObjectContext;
    NSError *error = nil;
    NSArray *array = [context executeFetchRequest:controller.fetchRequest error:&error];
    if (nil != array) {
        NSUInteger count = MIN(controller.fetchedObjects.count, array.count);
        for (NSUInteger index=0; index<count; index++) {
            NSManagedObject *a = array[index];
            NSManagedObject *b = controller.fetchedObjects[index];
            // Here you will see that sometimes the objects don't match
            NSLog(@"%d: %@ <--> %@", index, [[a body] text], [[b body] text]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我期望NSFRC fetchedObjects数组与手动executeFetchRequest返回的数组相同(我使用NSFRC fetchRequest来手动获取数据).然而,这种情况并非如此.手动executeFetchRequest返回的对象多于NSFRC fetchedObjects.有谁知道发生了什么?我已经关闭了NSFRC上的缓存,但报告了相同的行为.

谢谢!

===更新====

关于该问题的一些更新.我认为Core Data中存在一个错误,因为我能够看到来自NSFRC的一些不一致的结果,而且能够通过涉及"触摸"有问题的对象的解决方法来解决问题.这是一个解释正在发生的事情的场景:

想象一下以下Core Data模型: - …

core-data objective-c ios

6
推荐指数
1
解决办法
371
查看次数

标签 统计

core-data ×1

ios ×1

objective-c ×1