这可能不是最好的方法,但它有点工作。
我的应用程序的新版本的架构是如此不同,我认为使用迁移是不合理的。所以我决定创建一个错误屏幕,通知用户他们将丢失他们的数据。这有效,数据被删除但我必须重新启动应用程序以查看空数据库。如果不重新启动应用程序,最好的方法是什么?
以下是代码:
@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."
}
使用代码删除数据并创建新数据。
class ViewController: UIViewController {
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLayoutSubviews() {
print(scrollView.frame)
}
}
答案 0 :(得分:0)
所以我决定创建一个错误屏幕,通知用户他们将丢失数据。
庵。哇。你的穷人用户。请重新考虑。丢失用户数据是应用程序可以做的最糟糕的事情之一。故意破坏用户数据会使情况更糟。
如果不重新启动应用程序,最好的方法是什么?
在使用Core Data执行任何操作之前删除旧数据。那么你没有任何理由重新启动。
let newDir = docsDir.stringByAppendingPathComponent("CREWData.sqlite")
do {
try filemgr.removeItemAtPath(newDir)
}
此代码几乎可以保证失败。 Core Data使用单独的日志文件,其名称与主持久性存储相同,但添加了-wal
和-shm
。如果你不删除它们,你的数据很可能会从死里复活。