现在我有一个带有新名称的数据库。它被设置为像这样的对象:
class Users: Object {
@objc dynamic var userID = ""
@objc dynamic var username = ""
@objc dynamic var inputDate = Date()
override static func primaryKey() -> String? {
return "userID"
}
}
我有一个刷新按钮,当按下该按钮时,它将检索一个新的名称列表。检索新列表时,可能会删除某些名称。如何检测哪些userID
已被删除?或者我应该将新列表保存为新对象,例如class Users2: Object {
并比较这两个对象/数据库? - 任何提示?
答案 0 :(得分:1)
这是一个涉及Swift 4 Set的
的高级解决方案假设我们从两个人阵列开始,一个是现有数据,第二个是新数据,第一个数组中的一些人被删除了。
let array1 = ["Kirk", "Spock", "Bones", "Scotty"]
let array2 = ["Kirk", "Bones", "Scotty"]
将数组转换为集合
let s1 = Set(array1)
let s2 = Set(array2)
然后找到哪些人被删除了我们在集合上使用Set操作.subtracting。
let removedPeopleSet = s1.subtracting(s2)
print(removedPeopleSet)
和结果
["Spock"]
这里有一个问题是集合是无序的,因此如果需要,您需要在转换为数组时进行排序。
这种技术可以直接用在你的对象上,因为它们是ObjC对象,并且符合使用Sets时所需的hashable / equatable。