Realm Swift文档说查询Results<T>
对象会返回一个数组,但是,当我尝试实例化一个这样的结果数组:var allObjects : Results<Object> = []
时,我收到一个错误,说我不能将结果与数组文字一起使用。
我知道Realm API Reference说“结果实例无法直接实例化;”但我想知道是否有某种解决方法。
我很想知道因为我想要一个用空数组实例化的全局变量,并在UIViewController类的viewWillAppear
方法中进行变异。例如:
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")
}
答案 0 :(得分:3)
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")
}
答案 1 :(得分:0)
Results
泛型不是数组。它的枚举和可订阅但不是CollectionType。
在这种情况下你不会让allItems
成为可选项然后解包吗?