Alamofire,ObjectMapper,Realm:删除孤立对象

时间:2015-11-17 13:12:26

标签: swift realm alamofire objectmapper

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

e.g。我取一个联系人列表。现在已从响应中删除了一个联系人,应自动从Realm中删除。这是objectmapper可以做的吗?

1 个答案:

答案 0 :(得分:5)

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

实施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)
    }
}

您可以在此处查看所有令人敬畏的Set操作:Performing Set Operations