我正在尝试创建2个应用程序,一个构建持久性存储,另一个使用它。
到目前为止,我已经构建了一个使用CoreData从XML文件成功构建数据库的应用程序。所以这个项目包含数据模型,实体的.h / .m文件等。
我现在正尝试通过将数据模型文件,与实体和sqlite文件相关的.h / .m文件复制到该项目(通过添加现有)来启用第二个应用程序来读取.sqlite文件。
代码执行但始终无法在数据库中找到任何对象。
尝试复制这些文件时是否有任何限制或正确的步骤?
答案 0 :(得分:3)
这里的解决方案看似简单。
只需将.xcdatamodel文件从一个项目复制到另一个项目,然后当您第一次在模拟器中运行应用程序时,它将为该应用程序创建一个Documents文件夹。只需将已保存的.sqlite或.binary文件放入设备上的yourApp / Documents目录即可。 您可以在“~user / Library / Application Support / iPhone Simulator”中找到模拟器目录。
您还可以通过拖放进出管理器,在配置的iPhone上下载,编辑和上传myApp目录。查看“应用程序”列表。
iPhone不支持带有核心数据的xml商店,只支持sqlite或atomic(二进制)。对于大多数应用程序来说,sqlite存储是迄今为止更好的选择,因为它不是必须在运行时加载到内存中。
这是你的意思吗?
答案 1 :(得分:0)
我认为(不是100%肯定)你的应用程序plist,如果你将应用程序包名称设置为相同的东西,他们将共享资源,因为设备会认为它们是相同的应用程序...
答案 2 :(得分:0)
我认为这不会按照你想要的方式运作。在iPhone上,每个应用程序都在自己的“沙盒”中运行,并且一个应用程序实际上不可能编写另一个应用程序可以读取的文件。
答案 3 :(得分:0)
它真的是两个不同的项目,还是同一个项目中的两个目标?这似乎更有意义,然后您可以在实体对象发生变化时共享它们。
答案 4 :(得分:0)
为了将核心数据文件从一个项目复制到另一个项目,我首先创建了一个具有核心数据支持的新项目,然后我打开了以前coredata文件的内容,除了根标记,将所有子标记粘贴到新核心数据中在新项目中的文件。 以前我试图删除新项目中的coredata文件,复制粘贴前一个并更改其名称,但它无法正常工作。