나는 MyAPI에서 데이터를 Donwload 및 repeatly 핵심 데이터스레드를 커밋 할 때 NSMergeConflict 문제가 발생합니까?
예를
======================
에 저장됩니다 SomeFunction을하고있는 중이 야 =========================
그런 시간이 될 수있다 .. 함수가 아직 완료되지 않은 경우 나는이 기능을 스레드를 저지 생각하면, 내가 다른 스레드
에서 또 다시 그 메소드를 호출
,451,515,+(void)commit {
// get the moc for this thread
NSManagedObjectContext *moc = [self managedObjectContext];
NSThread *thread = [NSThread currentThread];
DLog(@"threadKey commit%@" , [[self class]threadKey]);
if ([thread isMainThread] == NO) {
// only observe notifications other than the main thread
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(contextDidSave:) name:NSManagedObjectContextDidSaveNotification object:moc];
}
NSError *error;
if (![moc save:&error]) {
DLog(@"Error in Saving %@", error);
dispatch_async(dispatch_get_main_queue(), ^{
//NSString * temp= [NSString stringWithFormat: @"There is error In Saving.. Contact us! :P",error];
//[[BNUtilitiesQuick UtilitiesQuick] Alert:temp];
});
}
if ([thread isMainThread] == NO) {
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSManagedObjectContextDidSaveNotification object:moc];
}
}
(이 코드는 캐시에 모든 데이터를 저장합니다 ..)
이오류 중 하나가 어떤 오류가 말해 줄 수
"NSMergeConflict (0x1205b7f0) for NSManagedObject (0x10900d70) with objectID
'0x10cad920 <x-coredata://60AE38D6-EE4C-4FE1-9B9A-5322E301E7D5/City/p2>' with oldVersion = 20 and newVersion = 21 and old object snapshot =
{\n Country = \"0x10611dd0 <x-coredata://60AE38D6-EE4C-4FE1-9B9A-5322E301E7D5/Country/p1>\";\n Name = \"Jakarta Barat\";\n} and new cached row =
{\n Country = \"0x1019e1f0 <x-coredata://60AE38D6-EE4C-4FE1-9B9A-5322E301E7D5/Country/p1>\";\n Name = \"Jakarta Barat\";\n}"
같은 오류가 ?
예를 들어, 0x10611dd0은 무엇입니까? 그 기억 장소인가요?
핵심 데이터 ID 란 무엇입니까?
어쨌든 오류가 어떻게 나타나나요? coredata는 이미 동일한 변경 사항을 병합하려고합니다.
예 여러 스레드가 다른 managedobjectcontext를 동시에 관리합니다. 모든 coredata에는 동일한 영구 저장소가 있습니다.