Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 王国迅速。如何使用主键链接到现有对象_Ios_Swift_Realm - Fatal编程技术网

Ios 王国迅速。如何使用主键链接到现有对象

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'.' 右链接如何存在于另一个模型中的对象而不创建它们?简单的事实是领域不允许使用匹配

我有映射类(简化模型)

然后我删除这个创建的对象域。删除(aa),重新启动应用程序,然后从上面的代码中再次创建

出错

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'.'