我无法将现有模型迁移到新版本。当前,我有以下模型类:
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
对象具有senderId
或receiverId
都类似于给定的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
的适当文档。