2013-07-19 7 views
2

CoreData + iCloud 동기화 사용에 문제가 있습니다.NSPersistentStoreDidImportUbiquitousContentChangesNotification이 비어 있음

간혹 NSPersistentStoreDidImportUbiquitousContentChangesNotification 알림이 삽입 됨, 업데이트 됨 및 삭제됨의 빈 배열을 반환합니다.

변경 사항이있을 때이 알림이 호출되면 왜 빈 알림을 반환합니까?

감사합니다 !!! 알림을 호출

코드 : 그냥 가끔 않습니다

- (void)persistentStoreDidChange:(NSNotification*)notification 
{ 
    DLog(@"Change Detected! Notification: %@", notification.description) 

    [__managedObjectContext performBlockAndWait:^(void) 
    { 
     [__managedObjectContext mergeChangesFromContextDidSaveNotification:notification]; 

     for(id<CoreDataDelegate>delegate in _delegates) 
     { 
      if([delegate respondsToSelector:@selector(persistentStoreDidChange)]) 
       [delegate persistentStoreDidChange]; 

     } 
    }]; 
} 

답변

3

. 핵심 데이터가있는 iCloud의 많은 심각한 문제와 비교하면 아주 사소한 문제입니다.

이 알림을받을 때 내가 좋아하는 것은 먼저 삽입, 업데이트 및 삭제 된 개체를 확인한 다음 무언가를 찾지 못하면 병합 프로세스를 진행하지 않는 것입니다. 다음과 같이하십시오.

NSDictionary *userInfo = [notification userInfo]; 
if (([userInfo objectForKey:NSInsertedObjectsKey] > 0) || 
    ([userInfo objectForKey:NSUpdatedObjectsKey] > 0) || 
    ([userInfo objectForKey:NSDeletedObjectsKey] > 0)) 
{ 
    // merge... 
} 
+0

고마워요! 그러나 때로는 데이터가 손상되는 이유는 무엇입니까? 나는 응용 프로그램이 더 많은 시간 (MOC 저장)을 저장할 때 동시에 여러 장치의 동일한 개체가 손상 될 데이터를 볼 때 ... MOC 저장 횟수를 제한하면 동기화가 실행된다고 생각합니까? 벌금? –

+1

세부 사항없이 말하기가 어렵습니다. 같은 개체를 여러 장치에 동시에 저장하면 충돌이 발생합니다. 충돌이 해결 될 것으로 예상되는 방식으로 해결되지 않을 수도 있습니다. 그것이 당신이보고있는 일종의 "부패"라면, 그것은 그것이 어떻게 작동하는지입니다. 그렇지 않은 경우보고있는 내용에 대한 세부 정보가 포함 된 새로운 질문을 게시하십시오. –