我使用Alamofire,ObjectMapper和Realm并保存我在领域中获取和映射的对象。 是否可以自动删除孤立对象?
e.g。我取一个联系人列表。现在已从响应中删除了一个联系人,应自动从Realm中删除。这是objectmapper可以做的吗?
答案 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。