我正在我的iOS项目中实现Realm,想知道是否只有在Object
的主键唯一的情况下才可以将List
附加到Object
上。目前我有类似的东西:
let realm = try! Realm()
let message = RealmMessage()
message.id = 99999
message.desc = "Please Help!"
let chatroom = realm.objects(RealmChatRoom.self)[0]
try! realm.write {
chatroom.messages.append(message)
}
但是,如果邮件已在列表中,则会崩溃。
我知道可以使用类似的东西来更新完整的对象
try! realm.write {
realm.add(chatRoom, update: .modified)
}
但是append
是否存在类似的内容?即仅在唯一键的情况下才写入,否则会被覆盖?
答案 0 :(得分:-1)
List存储对象引用及其元素随message
更新而自动更新。因此,如果chatroom.messages
包含message
,则无需再次附加。因此,您可以使用以下代码进行更新:
try! realm.write {
realm.add(message, update: .modified)
if !chatroom.messages.contains(message) {
chatroom.messages.append(message)
}
}