我正在尝试将存储在 Realm 中的简单数据快速加载到 uitableview 中。但我不希望 realm 一次加载所有内容,而是希望它在每次用户到达表底部时逐 block 加载。
我已经浏览了所有基本文档以及关于 stackoverflow 和 github 的几个问题和讨论,但似乎没有任何帮助。
这是我的对象-
class Numbers:Object {
@objc dynamic var numb = ""
@objc dynamic var name = ""
override class func primaryKey() -> String? {
return "numb"
}
}
这是最基本的代码——
override func viewDidLoad() {
super.viewDidLoad()
let realm = try! Realm()
try! realm.write {
let info = realm.objects(Numbers.self)
}
}
现在是下面一行-
let info = realm.objects(Numbers.self)
它将一次加载存储在 Realm 表中的所有数据,但我只想一次加载其中的一部分。
最佳答案
不清楚您为什么要这样做,但可能是因为您担心从内存角度来看获取所有 Number 对象的成本太高。如果这是您的顾虑,那就不必了。 Realm 延迟加载它的所有对象。这意味着当您使用 let info = realm.objects(Numbers.self)
从 Realm “获取”所有 Number 对象时,这些对象在被使用之前都不会被实际访问。例如:如果 Number 对象显示在 tableview 中,第一次实际读取对象是在 tableview 单元格中绘制时,因为 tableview 只绘制单元格的子集(那些需要出于滚动目的立即可见)这意味着只会读取这些 Number 对象的一个子集。
如果您确实需要访问较小的数字对象集,您可以执行以下操作。这取自 Swift realm docs (部分:限制结果)。
let info = try! Realm().objects(Numbers.self)
for i in 0..<5 {
let number = info[i]
// ...use number as you need to.
}
关于swift - 有没有办法以特定大小的批处理(比如 50)获取存储在 Realm 中的大量数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57002080/