我一直在我的iOS(swift和objectiveC)应用程序中使用Coredata。
现在在我的新项目中我有这种情况;数据模型频繁更改。例如,以前是String的属性变为Relation,反之亦然,String变为NSNumber,Relation消失,实体与其他表分离,等等。
Coredata仍然是最好的解决方案吗? 我必须总是写一个迁移脚本来解决迁移问题吗?
答案 0 :(得分:2)
核心数据最好与什么相比?在什么样的衡量轴上?易于管理数据模型迁移?查询速度?对象< - >存储互动?
你可以在很多轴上进行比较。
首先,观察,在现场设备上迁移数据是一个问题。任何数据库都需要一些时间才能迁移。应用无响应的时间。用户可以在迁移过程中杀死应用程序,认为它已经死了因此,请注意更改架构的频率。在启动时,您将失去每个无响应的应用程序的客户。您的同事可能无法理解客户可能会有多变幻无常。用户可能不太关心您的应用程序遭受任何类型的漫长迁移。
根据我的经验,Core Data比大多数环境更好地处理迁移。使用SQLite的其他环境不太可能具有更高的性能。使用其他数据库?然后你重写你的应用程序中的每个对象?哇!那么你有一个以上的迁移问题。
从您的问题来看,听起来您正在经历架构流失。这不是关于您的开发过程的好兆头。在考虑更改数据库之前,我会解决这个问题。
如果有选项,请始终使用轻量级迁移。在需要用于硬迁移的映射模型之前,请仔细考虑。轻量级迁移在该领域往往非常有效。这是一个非常重要的维护特征。硬迁移是您的架构的相当激进的突变。我非常努力地避免漫长的迁移。
答案 1 :(得分:0)
从我的角度来看,核心数据是最佳解决方案,即使在您需要进行硬迁移的情况下也是如此。
这只是我的观点。让我们看看其他人会在这里发布什么。