swift - 如何实例化 Realm Results<T> 数组

标签 swift realm

Realm Swift 文档说查询 Results<T>然而,当我尝试像这样实例化结果数组时,对象返回一个数组:var allObjects : Results<Object> = [] ,我收到一条错误消息,指出我不能将结果与数组文字一起使用。

我知道 Realm API Reference 说“Results instances cannot be directly instantiated;”但我想知道是否有某种解决方法。

我想知道,因为我想要一个用空数组实例化并在 viewWillAppear 中发生变异的全局变量UIViewController 类的方法。例如:

var allItems : Results<Item> = [] 

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    let realm = try! Realm()
    self.allItems = realm.objects(Item.self).sorted(byKeyPath: "description")
}

最佳答案

Results 是 Realm 提供的一种类型。虽然在外面它的行为像一个数组,但它实际上是一个包含 Realm 延迟加载机制的抽象,它不会暴露给终端应用程序。因此,第三方应用无法创建 Results 的新实例。

如果您只想保留由 Realm 查询创建的 Results 实例,您可以将其设为可选,而不是尝试先发制人地实例化它。

var allItems: Results<Item>?

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    let realm = try! Realm()
    self.allItems = realm.objects(Item.self).sorted(byKeyPath: "description")
}

关于swift - 如何实例化 Realm Results<T> 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43189897/

相关文章:

swift - 从 Bitbucket 中提取数据时发生冲突。 Xcode

swift - 倒带时自动重新加载 TableViewController

ios - Swift 同时将对象转换为类型和协议(protocol)

ios - 不调用 responseJSON 的 Alamofire completionHandler

ios - Realm - 从列表中删除和添加对象

ios - RealmSwift 显示每个日期到表格 View 部分

ios - 我如何在 Swift Playground 中使用 Realm?

android - RealmResult 处理时间限制

json - 如何从 alamofire 响应中获取字典数组的值?

ios - 如何使用 xmppframework 在 XMPP 中检索我自己最后发送的消息?