Objective c 核心数据:缺少的变量绑定(null)

Objective c 核心数据:缺少的变量绑定(null),objective-c,core-data,prefetch,Objective C,Core Data,Prefetch,在核心数据中,我有一个需要批量故障处理的计算案例。我使用以下方法来执行此操作,同时预取一些链接实体。大多数情况下,一切正常,但偶尔一些用户会崩溃: Fatal Exception: NSInternalInconsistencyException missing variable binding for (null) 以下是我执行此操作的方法: NSFetchRequest *request = [CoreDataWrapper fetchRequestForEntity:entityName

在核心数据中,我有一个需要批量故障处理的计算案例。我使用以下方法来执行此操作,同时预取一些链接实体。大多数情况下,一切正常,但偶尔一些用户会崩溃:

Fatal Exception: NSInternalInconsistencyException
missing variable binding for (null)
以下是我执行此操作的方法:

NSFetchRequest *request = [CoreDataWrapper fetchRequestForEntity:entityName inManagedObjectContext:aContext];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self IN %@", entities];
[request setPredicate:predicate];
[request setReturnsObjectsAsFaults:NO];
[request setRelationshipKeyPathsForPrefetching:entityPaths];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortKey ascending:ascending];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];

NSError *error;
NSArray *results = [aContext executeFetchRequest:request error:&error];

return results;

有什么想法吗?非常感谢

联系苹果公司后,我得到的答复如下:

  • 仅使用基于队列的上下文,即在需要创建NSManagedObjectContext实例时,使用NSPrivateQueueConcurrencyType或NSMainQueueConcurrencyType调用-(instancetype)initWithConcurrencyType:

  • 使用performBlock(AndWait)包装访问上下文及其对象的代码

  • 如果需要跨不同上下文传递核心数据对象,请使用NSManagedObject,而不是NSManagedObject

  • 在我的例子中,我有一种在后台线程中使用核心数据的旧方法,所以我需要在代码中使用performBlock


    就这样

    您确定
    实体中的对象属于
    aContext
    吗?它们来自
    NSSet*sis=[sessions valueForKeyPath:@“@distinctUnionOfObjects.sessionSerie”
    其中
    sessions
    NSManagedObject
    的数组,您解决了这个问题吗?我需要帮助解决同一个错误消息的问题,并寻找如何修复它的想法。你能再详细说明一下吗?在修复后,用一些代码片段说明代码中的“错误”和“权利”?我也遇到过类似的问题,但我(直接)没有提到的任何东西——我只使用一个MOC(尽管我的基本文档类可能有更多的MOC用于保存)。我从不在后台线程上显式调用任何东西。。。所以一些示例代码会有所帮助