提问人:Lory Huz 提问时间:10/11/2023 最后编辑:Lory Huz 更新时间:10/12/2023 访问量:39
以懒惰的方式将 Realm 对象转换为非第三方对象:Results<Item> 到 [Item]
Convert Realm objects to non-third-party objects in a lazy way: Results<Item> to [Item]
问:
我正在尝试将 Realm 持久化对象映射到另一种类型以分离关注点。
我有一个类似协议存储库的东西,用于检索一系列项目:[Item]
我有一个使用 Realm 实现这个存储库,所以我正在尝试将一个Results<PersistedItem>
[Item]
Results<PersistedItem>
当你直接在视图中使用它时,默认情况下是懒惰的,但随后你的整个应用程序都依赖于 Realm,因为你需要在每个视图中导入 Realm。
我已经尝试了这个 LazyList 实现,但每个项目都同时返回:
func items() -> LazyList<Item> {
let dbItems = realm.objects(PersistedItem.self) // return List<PersistedItem>
return LazyList(count: dbItems.count, useCache: true) { index in
print(index) // this is printing every index
return Item(persistedItem: dbItems[index])
}
}
然后我只需在 iOS SwiftUI 列表中访问这个 LazyList。这适用于默认的 Realm 集合,但不适用于此 LazyList 实现。
struct TestLazyView: View {
// Working
//let items: Results<PersistedItems>
// Not Working as it's load every items at init
let items: LazyList<Items>
var body: some View {
List(items) { item in
Text(item.id)
}
}
}
按需转换这些项目的方法是什么?谢谢!
答: 暂无答案
下一个:如何使领域对象可发送?
评论
realm.objects(PersistedItem.self)