将对象从一个Realm复制到另一个Realm会导致主键冲突

时间:2017-07-08 04:53:37

标签: swift realm

我想将一个对象从一个领域复制到另一个领域,但它抱怨已经存在一个具有该主键的对象。

详细说明:

我的应用中有两个不同的领域。一个存储在Caches文件夹中,另一个是Documents文件夹中的默认值。它们具有相同的架构。我想将一个对象从一个领域复制到另一个领域。按照文档中的指南,我使用Realm().create(_:value:update:)制作副本。当我从ContentRealm中传入要在UserRealm中创建的故事时,我得到一个例外,说明具有主键的对象已经存在。但是,UserRealm中尚未存在类型Story的实例,因此不应存在主键冲突。 Terminating app due to uncaught exception 'RLMException', reason: 'Attempting to create an object of type 'Story' with an existing primary key value '4'.'

我这样做错了吗?

    // Copy the Story to the user database
    var userStory: Story?
    do {
        try userRealm.write {
            userStory = userRealm.create(Story.self, value:storyObjectFromContentRealm)
        }
    }
    catch {
        print("Could not copy story: \(error)")
    }

1 个答案:

答案 0 :(得分:0)

事实证明,我的对象图中隐藏了一个周期性关系。 Realm的文档警告我这件事,我认为我没事,但事实证明我不是。修改关系后,我能够成功地将对象的副本从一个领域复制到另一个领域。

如果您遇到此问题,请检查您的关系。

相关问题