我目前正在用组件进行一些测试,特别是测试核心数据光迁移。
我的当前配置如下:
我的方案如下:
我的问题是:如果相关的数据模型不是最新的,我可以配置组件来防止它将更改上传到iCloud吗?(也就是说,在我的例子中,设备-A基于数据模型1上传对象,而iCloud已经基于数据模型2)
提前感谢!
更新1:
德鲁,非常感谢你的回答。我绝对同意上传不能(也可能不应该)被阻止,因为集群是一个分散的、对等的系统。
在理想的情况下,我希望拥有新数据模型的设备将忽略基于旧数据模型的数据。(类似于现有的行为,旧数据模型的设备将忽略基于新数据模型的任何数据)。这是支持吗?
如果没有,请考虑以下列情景为例:
目前,当不涉及组件时,当将新的NSManagedObject保存到持久性存储区时,我完全可以控制。因此,负责添加新书的应用程序的更新代码将确保从标题字段中提取第一个字母,并将其保存到新的titleFirstLetter属性中。(也就是说,在保存图书时,名为CATC-22的书将在titleFirstLetter属性中包含C)。
此外,当在核心数据堆栈上发生光迁移时,我会检测到这一点,并执行一次过程,在其中迭代数据库中的所有现有书籍,并根据标题值设置titleFirstLetter。从这一点开始,数据库是一致的和有效的,而新的代码将确保将来添加到数据库的书籍将保持数据库的有效性。
关于组件,如果我无法控制来自具有旧数据模型的设备的旧数据,如果我的代码从未被调用,如何填充titleFirstLetter的新属性?
谢谢您的帮助!
发布于 2016-03-02 14:38:02
你不能阻止它,不。集群是一种分散化的对等系统。实际上,一个设备无法知道另一个设备的当前状态,因此无法阻止上传。
更新后的设备应该能够处理来自其他设备的旧数据。旧模型的设备将忽略基于新模型的任何数据,直到它也被更新。然后,它将合并所有被忽略的数据。
最好在可能的情况下避免迁移,坚持简单的东西,比如添加属性或实体,而不是复杂的重构。如果您需要做大量的更改,可以考虑简单地从一个新的集合开始(例如,更改集成标识符)。
https://stackoverflow.com/questions/35746021
复制相似问题