有没有办法以特定大小的批次(比如 50)获取存储在领域中的大量数据?
Is there any way to fetch huge amount of data stored in realm in batches of specific size, say 50?
我正在尝试将领域中存储的简单数据加载到 uitableswift 中的视图中。但我不希望 realm 一次加载所有内容,而是希望它在每次用户到达 table 底部时逐块加载。
我已经阅读了所有基本文档以及关于 Whosebug 和 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)
它将一次加载存储在领域 table 中的所有数据,但我只想一次加载其中的一部分。
不清楚您为什么要这样做,但这可能是因为您担心从内存角度来看获取所有 Number 对象的成本太高。如果这是您的顾虑,那就不必了。 Realm 延迟加载它的所有对象。这意味着当您 'fetch' 使用 let info = realm.objects(Numbers.self)
none 领域中的所有 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.
}
我正在尝试将领域中存储的简单数据加载到 uitableswift 中的视图中。但我不希望 realm 一次加载所有内容,而是希望它在每次用户到达 table 底部时逐块加载。
我已经阅读了所有基本文档以及关于 Whosebug 和 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)
它将一次加载存储在领域 table 中的所有数据,但我只想一次加载其中的一部分。
不清楚您为什么要这样做,但这可能是因为您担心从内存角度来看获取所有 Number 对象的成本太高。如果这是您的顾虑,那就不必了。 Realm 延迟加载它的所有对象。这意味着当您 'fetch' 使用 let info = realm.objects(Numbers.self)
none 领域中的所有 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.
}