【问题标题】:Core Data NSRangeException Crash in multi threaded block多线程块中的核心数据 NSRangeException 崩溃
【发布时间】:2016-11-11 22:01:49
【问题描述】:

我有一个核心数据结构,其中联系人从服务器解析并与帐户实体相关联。要创建崩溃我: 1.用用户A登录并创建联系人 2. 使用用户B登录并发生崩溃。

显然有一个空的 NSArray 导致了这个崩溃。

在使用 performBlock 循环遍历服务器数据中的每个联系人时发生崩溃:

    NSManagedObjectContext *mainMOC = self.managedObjectContext;
    NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
    //NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSConfinementConcurrencyType];
    [moc setParentContext:mainMOC];
    [moc setUndoManager:nil];


    BCRAccount *account2 = (BCRAccount*)[moc objectWithID:[self.loggedInAccount objectID]];

    //[moc performBlockAndWait:^{
    [moc performBlock:^{
         //parse each contact

另外,我在引用子托管对象的单独方法中为每个联系人调用获取请求:

NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:[BCRContact entityName]];
NSManagedObjectContext *managedObjectContext = childmoc;

NSArray *fectchresult = [managedObjectContext executeFetchRequest:fetch error:&error];

我想知道这是一对多还是一对一的关系问题。必须有一些来自第一次登录的剩余数据导致第二次登录崩溃。

* 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[__NSArray0 objectAtIndex:]: index 15 beyond bounds for empty NSArray” *** 首先抛出调用堆栈: (0x18be921c0 0x18a8cc55c 0x18bdfd3dc 0x10024c154 0x1920301b4 0x1920303e4 0x19201d98c 0x192035448 0x191dd17e8 0x191cea220 0x18f1aa188 0x18f19ee64 0x18f19ed24 0x18f11b7ec 0x18f142c58 0x18f143678 0x18be3f7dc 0x18be3d40c 0x18be3d89c 0x18bd6c048 0x18d7f2198 0x191d582fc 0x191d53034 0x10008e578 0x18ad505b8) libc++abi.dylib:以 NSException 类型的未捕获异常终止

最后,在所有这些解析发生之前,当调用单独的服务时,我也会看到此错误: 2016-11-11 12:22:34.660266 AtEventUniversal[2223:781261] 提供给 CFRunLoopRunSpecific 的无效模式 'kCFRunLoopCommonModes' - 中断 _CFRunLoopError_RunCalledWithInvalidMode 以进行调试。此消息每次执行只会出现一次。

感谢您提供有关此混乱的任何提示。

【问题讨论】:

    标签: ios objective-c multithreading core-data


    【解决方案1】:

    在您不知道是什么导致崩溃的情况下,您应该使用Exception Breakpoint...Symbolic breakpoint... 来捕获异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2014-11-09
      • 2023-03-14
      • 2018-09-02
      • 2023-03-10
      相关资源
      最近更新 更多