1

核心数据和多线程:

  1. 在一种情况下保存
  2. 等待完成
  3. 获取对象 ID 并从其他上下文中请求它。

我收到错误 133000,后台线程上的对象为 NIL。好像保存没有完成。为什么?

    __block 章节数据 *ch1;
     [MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext) {
        ch1 = [ChapterData MR_createInContext:localContext];
        ch1.name = @"我的章节";
    } 完成:^{
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            NSError *错误;
            NSManagedObject *ch2ByObjectId = [[NSManagedObjectContext MR_contextForCurrentThread] existingObjectWithID:ch1.objectID error:&error];
            GHAssertNotNil(ch2ByObjectId, @"Ch2 by Ch1 对象 id 为 NIL");
        });

    }];

据我了解,这应该可行,但断言失败。

4

1 回答 1

0

我不确定您是否仍然遇到此问题,但这是我迟到的回复:您实际上并没有在 ManagedObjectContext 上调用保存方法。您只要求在“localContext”中创建对象,但不执行保存。

于 2013-07-22T15:52:36.070 回答