2

我使用 Alamofire、ObjectMapper 和 Realm,并将获取和映射的对象保存在领域中。是否可以自动删除孤立对象?

例如,我获取联系人列表。现在一个联系人已从响应中删除,应该会自动从 Realm 中删除。这是objectmapper可以做的吗?

4

1 回答 1

5

我不知道使用 Realm 或 ObjectMapper“自动”执行此操作的方法,但您基本上可以通过对 Realm 数据执行 Set.Subtract() 操作来删除孤立对象。但是,这也意味着您必须遵守HashableRealm 类的协议。

实现Hashable后,您可以执行以下操作:

var contacts = try! Realm().objects(Contacts)

let realmSet = Set<Contacts>(self.contacts)
let incomingSet = Set<Contacts>(incomingContacts)
let contactsToDeleteSet = realmSet.subtract(incomingSet)
for contact in contactsToDeleteSet {
    try! realm.write {
        realm.delete(contact)
    }
}

你可以在这里查看所有很棒的集合操作:执行集合操作

于 2015-11-18T00:54:04.480 回答