1

핵심 데이터 및 멀티 스레딩 사용 : 완료 악명 높은 오류 133000 GCD와 MagicalRecord

  • 잡아 오브젝트 ID에 대한
  • 대기 한 상황에서

    1. 저장하고 다른 컨텍스트에서를 요청합니다.

    오류 133000이 발생하고 백그라운드 스레드의 개체가 NIL입니다. 저장이 완료되지 않은 것 같습니다. 왜?

     
        __block ChapterData *ch1; 
        [MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext) { 
         ch1 = [ChapterData MR_createInContext:localContext]; 
         ch1.name = @"My Chapter"; 
        } completion:^{ 
         dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
          NSError *error; 
          NSManagedObject *ch2ByObjectId = [[NSManagedObjectContext MR_contextForCurrentThread] existingObjectWithID:ch1.objectID error:&error]; 
          GHAssertNotNil(ch2ByObjectId, @"Ch2 by Ch1 object id is NIL"); 
         }); 
    
        }]; 
    

    내 이해하려면이게 작동해야하지만 아직 주장에 어긋납니다.

  • 답변

    0

    나는 여전히이 문제가있는 경우 잘 모르겠지만, 여기 내 답변이 늦어 간다 : 당신은 실제로는 ManagedObjectContext에 방법을 저장 호출되지 않습니다. "localContext"에 생성 될 객체 만 요청하고 있지만 저장은 수행되지 않습니다. 문맥을 저장한다

    +0

    창조가 MagicalRecord.saveInBackgroundWithBlock 래핑된다. – Aviel

    +0

    컨텍스트의 기본 병합 정책 만 사용하고 있습니까? 로컬 컨텍스트가 주 스레드 상위 컨텍스트의 하위 요소입니까? –

    관련 문제