Это может быть не лучший способ сделать это, но он работает.Xcode: Reset CoreData после removeItemAtPath
Схема новой версии моего приложения настолько отличается, что я не думаю, что разумно использовать миграцию. Поэтому я решил создать экран ошибки, который информирует пользователя о том, что они потеряют свои данные. Это работает, и данные удаляются, но я должен перезапустить приложение, чтобы увидеть пустую базу данных. Какой был бы лучший способ сделать это без перезапуска приложения?
Вот код:
@IBOutlet weak var myTextView: UITextView!
@IBOutlet weak var doneButton: UIBarButtonItem!
@IBAction func doneAction(sender: UIButton) {
createAppData()
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc : UIViewController = storyboard.instantiateViewControllerWithIdentifier("NCStartMenuTV")
self.presentViewController(vc, animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
let filemgr = NSFileManager.defaultManager()
let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,
.UserDomainMask, true)
let docsDir = dirPaths[0]
let newDir = docsDir.stringByAppendingPathComponent("CREWData.sqlite")
do {
try filemgr.removeItemAtPath(newDir)
}
catch let error as NSError {
error.description
}
}
override func viewDidAppear(animated: Bool) {
myTextView.text = "Your app will lose data if you proceed. Please accept our apologies but the new features in this version makes this necessary."
}
Рабочий код для удаления данных и создать новые данные.
@IBAction func doneAction(sender: UIButton) {
deleteAppData()
createAppData()
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc : UIViewController = storyboard.instantiateViewControllerWithIdentifier("NCStartMenuTV")
self.presentViewController(vc, animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
myTextView.text = "Your app will lose data if you proceed. Please accept our apologies but the new features in this version makes this necessary."
}
Приложение все еще выполняет ту же работу для пользователей, хотя? Итак, как изменилась схема? Если вы не сообщите об этом пользователям до того, как будет выпущено обновление, будет подготовлен для * много * несчастных людей ... – Wain
Я полностью понимаю, но насколько я могу судить, не так много пользователей, так как у нас нет продвигали приложение. Изменены ключи объектов. Я действительно думаю о приложении как бета-версии. Как вы, наверное, можете догадаться, что я любитель, пытающийся разработать приложение для небольшого сообщества. Я также добавил функцию отправки всех данных в виде резервной копии. Я рассмотрю сопоставление старых ключей с новыми ключами и сохраню данные. Я опубликую пересмотренный код для удаления данных выше. – PatriciaW