我读过这行得通,但我做不到。我想预填充核心数据。我运行了我的项目,以便创建 sqlite 文件。我将它复制到我的桌面,然后使用命令行 sqlite3 预填充它。我运行查询以确保它被正确填充。所以现在我将它重新添加到我的项目中。但是,无论我做什么,它都不会获取数据。
我让它工作一次。在模拟器中运行它后,我从项目的文件夹中重新复制了 sqlite 文件。然后我填充了这个新的 sqlite 文件。我把它放回我的项目中,我得到了要显示的内容。
我认为问题在于 Z_METADATA 表。此表具有 Z_UUID 属性。我认为它唯一有效的时候是模拟器的 UUID 和 sqlite 的 Z_UUID 属性相同。
我进入 ~/Library/Developer/Xcode/DerivedData 并删除了 DerivedData 文件夹的内容。所以现在我的模拟器在我运行它时会有一个不同的 UUID。我这样做了,现在 sqlite 文件的内容将不会显示。这就是为什么我认为 Z_METADATA 表是问题所在。Z_METADATA 的 UUID 和我的模拟器的 UUID 不一样所以由于某种原因它不能使用它?
我发现的所有关于以这种方式预填充核心数据的文章都是旧的,大约在 2009 年,所以我认为这不是问题。那么我可以使用这种复制sqlite文件的方法,使用命令行预先填充它,然后将它重新添加到项目中吗?有没有人有当前的方法来预填充核心数据?
所以错误是我NSFetchedResultsController
正在返回 0 个对象的计数。我得到它来返回我上面提到的一次所有数据。