Удаление объектов coredata с помощью пользовательской миграции

#ios #core-data

#iOS #core-данные

Вопрос:

Я пытаюсь удалить объекты из coredata с помощью пользовательской миграции coredata. Я попробовал это в следующих методах. Он всегда завершался ошибкой.

  • performCustomValidationForEntityMapping
  • - (BOOL)endEntityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError **)error
  • - (BOOL)beginEntityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError **)error

Ошибка :

 Error Domain=NSCocoaErrorDomain Code=513 "The file couldn’t be saved because you don’t have permission." UserInfo={NSPersistentStoreOptions={
  NSReadOnlyPersistentStoreOption = 1;
}, reason=Unable to write to file opened Read Only.,
  

Комментарии:

1. Эта ошибка на самом деле не связана с миграцией. Это говорит о том, что у вас где-то неверный URL-адрес файла.

2. Я чувствую, что это связано с managedObjectContext, доступным только для чтения, во время сопоставления. Я заставляю это работать, меняя manager.destinationContext manager.sourceContext `. Спасибо

Ответ №1:

Я могу исправить эту проблему, из-за ошибки save работы с базой данных coredatabase в нем говорится, что файлы доступны только для чтения, что заставило меня задуматься об этом, и ранее я удалял объекты базы данных coredatabase с помощью manager.sourceContext . Я чувствую, что coredata намеренно сохраняет это как доступное только для чтения во время сопоставления, я решил удалить объекты, используя manager.destinationContext , и это работает отлично. Ребята, не стесняйтесь предлагать свои материалы, для меня это работает нормально.