Как сохранить контекст после импорта данных с помощью MagicalImport?
Я импортировал массив json, используя метод MR_importFromArray MagicalImport (версия 2.1). Я пытаюсь получить импортированные NSManagedObjects с помощью MR_findAll без какого-либо успеха. Вот варианты, которые я пробовал до сих пор:
//Attempt 1 [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) { [Thread MR_importFromArray:threadsData]; } completion:^(BOOL success, NSError *error) { NSArray *allThreads = [Thread MR_findAll]; }]; //Attempt 2 [MagicalRecord saveUsingCurrentThreadContextWithBlock:^(NSManagedObjectContext *localContext) { [Thread MR_importFromArray:threadsData inContext:localContext]; } completion:^(BOOL success, NSError *error) { NSArray *allThreads = [Thread MR_findAllInContext:[NSManagedObjectContext MR_contextForCurrentThread]]; }]; //Attempt 3 NSManagedObjectContext *context =[NSManagedObjectContext MR_defaultContext]; [Thread MR_importFromArray:threadsData inContext:context]; [context MR_saveToPersistentStoreAndWait]; NSArray *allThreads = [Thread MR_findAllInContext:context]; //Attempt 4 [Thread MR_importFromArray:threadsData]; [[NSManagedObjectContext MR_contextForCurrentThread] MR_saveToPersistentStoreAndWait]; NSArray *allThreads = [Thread MR_findAll];
И вот ошибка, которую я вижу в консоли:
-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:](0xb2566e0) NO CHANGES IN ** DEFAULT ** CONTEXT - NOT SAVING
Есть идеи, что я делаю не так?
2 ответа
Решение
Нашел ответ. Похоже, есть ошибка в MR_importFromArray. Когда я вручную перебираю объекты и сохраняю их в контексте, все работает нормально. Вот как:
[MagicalRecord saveUsingCurrentThreadContextWithBlock:^(NSManagedObjectContext *localContext) {
[threadsData enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[Thread MR_importFromObject:obj];
}];
} completion:^(BOOL success, NSError *error) {
NSArray *allThreads = [Thread MR_findAll];
}];
[[NSManagedObjectContext MR_defaultContext]saveToPersistentStoreAndWait];