将对象领域迁移到列表中

时间:2019-08-27 05:20:46

标签: ios swift realm realm-list realm-migration

我无法将现有模型迁移到新版本。当前,我有以下模型类:

class MessageRLM: Object {
    @objc dynamic var senderId: String = ""
    @objc dynamic var receiverId: String = ""
}

class User: Object {
    @objc dynamic var id: String = ""
}

我想将所有MessageRLM对象置于-to-many下的User关系中

class User: Object {
    @objc dynamic var id: String = ""
    let messages = List<MessageRLM>()
}

迁移背后的逻辑是,如果任何MessageRLM对象具有senderIdreceiverId都类似于给定的User.id,则该消息将被添加到该对象中用户的messages

以下是我的尝试:

migration.enumerateObjects(ofType: User.className()) { oldUser, newUser in
    let messageList = List<DynamicObject>()

    migration.enumerateObjects(ofType: MessageRLM.className()) { oldMessage, newMessage in
        if newMessage!["senderId"] as! String == newUser!["jid"] as! String {
            messageList.append(newMessage!)
        } else if newMessage!["receiverId"] as! String == newUser!["jid"] as! String {
            messageList.append(newMessage!)
        } else {
            //ignored message
        }
    }
    newUser!["messages"] = messageList
}

但是,我的User.messages列表中有一个空列表。我找不到有关如何迁移到List的适当文档。

0 个答案:

没有答案