2016-06-23 5 views
0

내 managedObjects를 저장했습니다. 하지만 내 NSManagedObjectID 저장 후 여전히 임시입니다. 왜?내 NSManagedObjectID는 저장 후에도 일시적입니다. 하지만 왜?

dispatch_async(privateQueue, ^{ 
    __block NSMutableArray *ids = [NSMutableArray array]; 

    [[[LPAppDelegate instance] privateContext] performBlockAndWait:^{ 

     if ([responseObject isKindOfClass:[NSDictionary class]]) { 
      id arr = ((NSDictionary*)responseObject)[@"results"]; 
      for (int i=0; i < ((NSArray *)arr).count; i++) { 
       LPFilm *film = [LPFilm MR_createEntityInContext:privateContext]; 
       [ids addObject:film.objectID]; 
      } 
     } 

     NSError *error = nil; 
     [privateContext save:&error]; 
     if (error) { 
      NSLog(@"___fetch service error: %@", [error localizedDescription]); 
     } 
    }]; 


    for (NSManagedObjectID *objID in ids) { 
     if (objID.isTemporaryID) { 
      NSLog(@"__tempID %@", objID); 
     } 
    } 
}); 

답변

1

변경 사항을 저장하면 새로운 NSManagedObject 인스턴스에 새 개체 ID가 부여됩니다. 이전에 존재 한 NSManagedObjectID의 인스턴스는 내부 변환되지 않고 새 인스턴스로 바뀝니다. 그러나 관리 객체에 새 ID를 요청해야합니다.

귀하의 경우, 저장하기 전에 개체 ID의 배열을 저장하고 있습니다. 변경 사항을 저장하더라도 이러한 객체는 절대로 변경되지 않습니다. 그러나 관리 대상으로 돌아가 개체 ID가 인 경우 다시을 요청하면 임시 결과가 아닌 다른 결과가 표시됩니다.