背景详情
我有一个生产iOS应用程序,它使用由Core Data管理的相对复杂的数据模型。我想对它进行一些修改和扩展,并且计划的修改都不会添加或修改实体之间的关系。它们也不会涉及大量新数据,也不会从性能的角度来看超级快速访问的信息。它也是在客户端只读的信息。
根据以往的经验,我一般发现使用officially sanctioned approach更新Core Data中的数据模型是不可靠的,耗时的,难以测试的,并且远不如文档那么“轻量级”我相信。
问题
是否有一个很好的替代方案可以扩展数据模型的核心数据方式,从而在没有(或很少)隐藏陷阱的情况下产生合理的结果?
例如,至少在理论上似乎可以使用NSUserDefaults
,Keychain,或者只是我在文件系统中创建的任意文件作为键值存储,实现一个简单的密钥生成协议,如{ {1}}或<object-id>_fieldName
,将额外数据存储到一边,然后在我的Core Data实体上实现相应的访问器,以便存储位置方面的差异对应用程序的其余部分是透明的。这看起来大致类似于使用传统RDBMS进行某些操作的应用程序,然后是一个NoSQL存储层,用于与关系实体“切向连接”但在关系上下文中不直接相关的事物。
这样的事情会是一种合理的(如果是非常规的)方法吗?是否有任何严重的隐藏陷阱,或任何看似更好的替代方法(没有进行实际的核心数据迁移)?