领域获取结果控制器



我是realm的新手,以前使用过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领域中,从数据库中获取所有对象。是否有任何方法可以在不获取所有缓存对象的情况下对特定类型和谓词的对象设置通知?提前谢谢。

当然,您可以在应用过滤器和排序后声明集合观察:

// 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)
}
}

最新更新