【发布时间】:2016-02-18 21:03:32
【问题描述】:
我使用 Alamofire、ObjectMapper 和 Realm 并将获取和映射的对象保存在领域中。 是否可以自动删除孤立对象?
例如我获取联系人列表。现在一个联系人已从响应中删除,应该会自动从 Realm 中删除。这是objectmapper可以做到的吗?
【问题讨论】:
标签: swift realm alamofire objectmapper
我使用 Alamofire、ObjectMapper 和 Realm 并将获取和映射的对象保存在领域中。 是否可以自动删除孤立对象?
例如我获取联系人列表。现在一个联系人已从响应中删除,应该会自动从 Realm 中删除。这是objectmapper可以做到的吗?
【问题讨论】:
标签: swift realm alamofire objectmapper
我不知道使用 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。
【讨论】: