仅当唯一主键时才追加到领域列表

时间:2019-09-03 08:26:56

标签: ios swift realm

我正在我的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是否存在类似的内容?即仅在唯一键的情况下才写入,否则会被覆盖?

1 个答案:

答案 0 :(得分:-1)

List存储对象引用及其元素随message更新而自动更新。因此,如果chatroom.messages包含message,则无需再次附加。因此,您可以使用以下代码进行更新:

try! realm.write {
    realm.add(message, update: .modified)
    if !chatroom.messages.contains(message) {
        chatroom.messages.append(message)
    }
}