使用 Ensembles 更改核心数据对象的全局标识符

Changing a global identifier of a Core Data object with Ensembles

我正在阅读 Ensembles 文档,其中全局标识符在对象生命周期内不应更改。但是,我有一个 Tag 对象,它只包含一个名称属性(一个字符串)。同样根据 Ensembles 文档,标签名称可以 returned 作为全局标识符,这实际上比 returning UUID 更好,原因很明显。

我的问题是,既然允许用户在我的应用程序中重命名标签,我应该从数据库中删除标签对象并重新创建它,还是重命名标签对象被认为是安全的? (重命名标签对象会导致应用return新的标签名称作为全局标识符,这似乎与对象整个生命周期中不更改全局标识符的警告冲突)

谢谢。

您不应更改全局 ID,因此标签对象应被视为不可变的。您可以删除它们,或插入新的,甚至是在其他设备上创建的。但永远不要更改全局 ID。

我的建议是在用户重命名时创建一个新的标签对象。根据您的模型,这可能意味着将关系从一个标记对象更改为另一个对象,但这应该很有效。

全局 ID 的好处在于,即使您同时在两个设备上创建相同的标签,Ensembles 也可以合并关系。