Я выполняю некоторую функцию, которая будет загружать данные из MyAPI и повторно сохранять данные ядра
пример
=============================
=========================
может быть таким временем .. Когда функция еще не закончена, я вызываю этот метод снова и снова в другом потоке
, когда я фиксирую этопоток с этой функцией
+(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?Это место в памяти?
Что такое идентификатор данных ядра?
Как ошибка все равно появляется?Похоже, coredata пытается объединить изменения, которые уже одинаковы.
Да, несколько потоков одновременно управляют РАЗЛИЧНЫМИ управляемыми объектами контекста.Все эти coredata имеют одно и то же постоянное хранилище.