Ios 王国迅速。如何使用主键链接到现有对象
我有映射类(简化模型) 或 然后我删除这个创建的对象域。删除(aa),重新启动应用程序,然后从上面的代码中再次创建 出错Ios 王国迅速。如何使用主键链接到现有对象,ios,swift,realm,Ios,Swift,Realm,我有映射类(简化模型) 或 然后我删除这个创建的对象域。删除(aa),重新启动应用程序,然后从上面的代码中再次创建 出错 Terminating app due to uncaught exception 'RLMException', reason: 'Can't create object with existing primary key value 'https://example.com/1.jpg'.' 右链接如何存在于另一个模型中的对象而不创建它们?简单的事实是领域不允许使用匹配
Terminating app due to uncaught exception 'RLMException', reason: 'Can't create object with existing primary key value 'https://example.com/1.jpg'.'
右链接如何存在于另一个模型中的对象而不创建它们?简单的事实是领域不允许使用匹配主键的两个独立的
对象。您不能实例化一个全新的对象(即使用让newImage=AlbumImage()
),然后将其添加到数据库中,因为Realm将尝试将其视为一个完全独立的图像
如果您创建一个新的非托管对象
,那么当您在同一事务中尝试将其附加到列表
,它也会尝试将该对象添加到域中。此时,如果新对象具有与现有对象匹配的主键,则会发生异常
要避免这种情况,您可能需要做两件事:
- 您可以通过执行'let image=try'来查询具有相同主键的预先存在的对象!Realm().object(类型:AlbumImage.self,forPrimaryKey:“”)。然后可以更新此对象,而不是从头开始创建新对象
- 您可以将逻辑更改为使用
realm.add(albumImage,update:true)
。这会将具有相同主键的新对象与数据库中已有的对象合并
祝你好运
let aa = AnotherAlbum()
aa.id = album.id
aa.images.append(objectsIn: album.images!)
let aa = AnotherAlbum()
aa.id = album.id
aa.images = album.images!
Terminating app due to uncaught exception 'RLMException', reason: 'Can't create object with existing primary key value 'https://example.com/1.jpg'.'