Удаление хранилища CoreData на OS X?
Я играю с CoreData в приложении Mac OS X. После изменения объекта я получил следующую ошибку:
Модель управляемой объектной модели, используемая для открытия постоянного хранилища, несовместима с той, которая использовалась для создания постоянного хранилища.
Все ответы, которые я нашел для этой проблемы, предполагают внедрение управления версиями/миграцией в приложение, но я не заинтересован в сохранении моих данных. Разве для этого нет более сложного решения? Как удаление файла запаса или что-то в этом роде? И если да, где находится этот файл?
Спасибо.
Ответы
Ответ 1
Если вам не нужны данные, тогда да, вы можете просто удалить старый файл и создать новый. Если ваши данные основаны на документе, то сам документ следует удалить. Если вы используете единое хранилище для всего приложения (не на основе документа), тогда вы должны посмотреть в коде, который создает объект хранилища, чтобы найти местоположение. Шаблон помещает код создания в делегат приложения, а местоположение по умолчанию для хранилища находится в ${HOME}/Library/Application Support/${APP_NAME}/
.
Ответ 2
В OS X 10.7 Lion, когда приложение изолировано, оно хранится в:
~/Library/Containers/com.yourcompany.yourAppName/
Ответ 3
Я обнаружил, что для Mac OS X 10.8/Xcode 4.6 данные хранятся в папке с производными данными под
Users/*username*/Library/Developer/Xcode/DerivedData/*app name*-*random string*/Build/Products/Debug/*app name*.sqlite
Самый простой способ удалить эти данные - перейти к организатору, выбрать вкладку проекта и нажать кнопку "Удалить..." по производным данным.
Ответ 4
В качестве альтернативы для OSX используйте Nsfilemanager для удаления файла с помощью URL-адреса, определенного в lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator{...}
В этом var persistentStoreCoordinator будет определен URL-адрес, который предназначен для использования persistentStoreCoordinator. Вы можете просто использовать указанный здесь URL, чтобы удалить старый магазин. Вставьте приведенный ниже код. Запустите проект, и файл будет удален. Затем удалите код, чтобы разрешить сохранение объектов и не удалять данные каждый раз.
вот что я нашел в lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator
let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("CocoaAppCD.storedata")
вот что я поставил сразу под ним.
do{
try NSFileManager.defaultManager().removeItemAtURL(url)
} catch{
print("could not delete file")
}
затем я нажал run. Он запускался один раз, после чего я удалял только что сделанный код, чтобы данные не удалялись каждый раз
Ответ 5
В Mac OS X 10.11.4 с Xcode 7.3 очистка исправленной проблемы для меня:
Product
> Clean
или Shift ⌘ K
Ответ 6
Попробуйте запустить приложение на симуляторе другого устройства, которое вы ранее не использовали, и посмотрите, помогает ли он вам (т.е. iPhone SE вместо iPhone 7), Если это так, то удаление поврежденных папок должно помочь. Открыть терминал и выполнить следующие команды:
sudo rm -rf ~/Library/Developer/CoreSimulator/Devices
чтобы удалить данные симуляторов, которые могут быть повреждены,
sudo rm -rf ~/Library/Developer/XCode/DerivedData/
чтобы удалить данные приложения.
Надеюсь, что это поможет!