我(最终)设法使用Core Data获取原型应用程序以持久保存到sqlite文件。退出并重新启动我看到相同的数据。所以一切似乎都很好。
我想现在再次从头开始,所以我去删除了sqlite持久化数据。我将它的位置设置为:
open lazy var applicationDocumentsDirectory: NSURL = {
// The directory the application uses to store the Core Data store file.
let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return urls[urls.count-1] as NSURL
}()
let url = self.applicationDocumentsDirectory.appendingPathComponent("TrainingDiary.sqlite")
将.sqlite文件放在〜/ Library / Containers / uk.me.stevenlord.Core-Data-Binding / Data / Documents
其中有四个文件:iChats,TrainingDiary.sqlite,TrainingDiary.sqlite-shm和TrainingDiary.sqlite-wal
我关闭了我的应用。删除所有文件。当我重新打开我的应用程序时,完整的Core Data模型仍然存在,当我回顾这个目录时,文件又回来了。
我错过了什么?
编辑: 我已经知道发生了什么,虽然我仍然不太明白为什么这是它的工作原理。上面的代码指定了应该保存核心数据的位置: 将.sqlite文件放在
中~/Library/Containers/uk.me.stevenlord.Core-Data-Binding/Data/Documents/TrainingDiary.sqlite
但是我现在发现应用程序还保存了以下内容
~/Library/Containers/uk.me.stevenlord.Core-Data-Binding/Data/Library/Application Support/Core Data Binding/Core_Data_Binding.sqlite
我的XCode9项目称为“核心数据绑定”。如果我删除此文件并启动我的应用程序,我会得到一个没有预期数据的应用程序。
所以持久性存储不会到达我指定的位置。所以仍然困惑。
我还缺少一些东西。但不同的东西