我是新手,以前使用过Core Data。据我了解,NSFetchedResultsController
的类似代码如下:
observationToken = realm.objects(DBMessage.self).observe { (changes) in
switch changes {
case .initial(let messages):
print("fetched - \(Array(messages))")
case .update(let results, deletions: let deletions, insertions: let insertions, modifications: let modifications):
let updates = Array(results)
print("updates started - \(Thread.isMainThread)")
insertions.forEach({
print("updates - \(updates[$0])")
})
print("updates finished")
case .error(let error):
print("observation error - \(error.localizedDescription)")
}
}
但是问题在于,在case .initial
中,领域从数据库中获取所有对象。有什么方法可以在不获取所有缓存的对象的情况下针对特定类型和谓词的对象设置通知吗?预先感谢。
答案 0 :(得分:0)
当然,您可以在应用过滤器和排序后声明集合观察:
// just an example
observationToken = realm.objects(DBMessage.self)
.filter("isRead == false")
.sort(byKeyPath: "insertedAt", ascending: false)
.observe { [weak self] changes in
switch changes {
case .initial(let messages):
// initial collection
break
case .update(_, let deletions, let insertions, let modifications):
break
case .error(let error):
print(error)
}
}