Ios CoreData获得永久对象与Xcode 6 Beta 6崩溃

Ios CoreData获得永久对象与Xcode 6 Beta 6崩溃,ios,objective-c,core-data,magicalrecord,xcode6-beta6,Ios,Objective C,Core Data,Magicalrecord,Xcode6 Beta6,我正在使用MagicalRecord并在此方法中导入实体的数据: +(void)importEnduserOnBackgroundFromResponse:(id)responseObject success:(void (^)(QNEnduser *provider))success andFailure:(void (^)(NSError *error

我正在使用MagicalRecord并在此方法中导入实体的数据:

+(void)importEnduserOnBackgroundFromResponse:(id)responseObject
                                     success:(void (^)(QNEnduser *provider))success
                                  andFailure:(void (^)(NSError *error))failure
{
    __block NSManagedObjectID *enduserID;
    __block NSError *importError;
    [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
        QNEnduser *enduser = [QNEnduser MR_importFromObject:enduserDict inContext:localContext];

        [localContext obtainPermanentIDsForObjects:localContext.insertedObjects.allObjects error:&importError];
        enduserID = enduser.objectID;
    } completion:^(BOOL successFlag, NSError *saveError) {
        // Check for errors (importError and saveError), if no errors import the entity in the main context and call the success block
        QNEnduser *newEnduser = (QNEnduser*)[[NSManagedObjectContext MR_defaultContext] objectWithID:enduserID];
    }];
}
请注意,我在完成块中剥离了一点代码,因为它对于这个问题并不重要

在Xcode 5中,此代码有效。但在Xcode 6 Beta 6中,它在[localContext获取永久对象:localContext.insertedObjects.allObjects错误:&importError]处抛出异常

我发现了类似的问题,但它们比较老,而且它们的解决方案在我的情况下不起作用,正如您所看到的,我已经尝试获取所有插入对象的永久ID,尽管这并不重要,因为没有其他插入对象

是否有其他人遇到过这个问题,它是beta 6中已知的Bug,是否存在已知的工作区?还是我的错

编辑

不知何故,我无法获取异常-我在Xcode中设置了一个异常断点,但当我在错误行周围放置一个@try/@catch时,什么都不会被捕获

在异常断点处停止时,这是回溯:

* thread #4: tid = 0x2f2a0, 0x0000000103f19973 libobjc.A.dylib`objc_exception_throw, queue = 'NSManagedObjectContext Queue', stop reason = breakpoint 1.3
  frame #0: 0x0000000103f19973 libobjc.A.dylib`objc_exception_throw
  frame #1: 0x0000000102333dd2 CoreData`-[NSPersistentStoreCoordinator(_NSInternalMethods) obtainPermanentIDsForObjects:error:] + 1458
  frame #2: 0x00000001023aa16d CoreData`__99-[NSManagedObjectContext(_NestedContextSupport) _parentObtainPermanentIDsForObjects:context:error:]_block_invoke + 1037
  frame #3: 0x0000000104f5772d libdispatch.dylib`_dispatch_client_callout + 8
  frame #4: 0x0000000104f465d0 libdispatch.dylib`_dispatch_barrier_sync_f_invoke + 57
  frame #5: 0x000000010233df92 CoreData`_perform + 114
  frame #6: 0x00000001023a9bde CoreData`-[NSManagedObjectContext(_NestedContextSupport) _parentObtainPermanentIDsForObjects:context:error:] + 446
  frame #7: 0x0000000102333592 CoreData`-[NSManagedObjectContext obtainPermanentIDsForObjects:error:] + 498
* frame #8: 0x000000010206fc28 QonnectAPIPod`__75+[QNImportHelper importEnduserOnBackgroundFromResponse:success:andFailure:]_block_invoke(.block_descriptor=<unavailable>, localContext=0x00007fd078dd8d60) + 568 at QNImportHelper.m:129
  frame #9: 0x0000000102142abd QonnectAPIPod`__51+[MagicalRecord(.block_descriptor=0x00007fd078d026b0) saveWithBlock:completion:]_block_invoke + 25 at MagicalRecord+Actions.m:28
  frame #10: 0x00000001023a461e CoreData`developerSubmittedBlockToNSManagedObjectContextPerform_privateasync + 78
  frame #11: 0x0000000104f5772d libdispatch.dylib`_dispatch_client_callout + 8
  frame #12: 0x0000000104f46dcf libdispatch.dylib`_dispatch_queue_drain + 481
  frame #13: 0x0000000104f46b94 libdispatch.dylib`_dispatch_queue_invoke + 112
  frame #14: 0x0000000104f479fc libdispatch.dylib`_dispatch_root_queue_drain + 81
  frame #15: 0x0000000104f47d12 libdispatch.dylib`_dispatch_worker_thread2 + 40
  frame #16: 0x00000001052ebef8 libsystem_pthread.dylib`_pthread_wqthread + 314
  frame #17: 0x00000001052eefb9 libsystem_pthread.dylib`start_wqthread + 13

粘贴你的异常和StackTrace你真的在块外声明importError吗?我对此感觉不太好。1.我不确定NSError**指针是否为原子指针。2.如果一个NSError*被放置在&NSError,那么如果它是在块外部声明的,那么它在块上下文之外的retain计数会增加多少?NSError*是否在块外引用之前解除分配。。。等等。或者你也编辑了它。哦,你是对的,我已经在它所属的位置添加了错误声明。这不是预期的或受支持的使用OccainPermanentidsForObjects。而是保存上下文。在代码中,在保存后,在完成处理程序中获取用户对象和ID。@quellish您能提供一个示例吗?我尝试过类似的方法,但被告知在中跨不同线程引入托管对象是个坏主意,即使我只是在另一个线程中访问objectID。这对我来说是有道理的,毕竟苹果公司也这么说使用objectid。