【发布时间】:2016-04-07 20:06:36
【问题描述】:
这真的很基础,但我只是找不到如何使用 Swift 从 Realm 数据库中获取所有类型的对象。是的,是的:
var dogs = try! Realm().objects(Dog)
但是如果我想事先声明和初始化dogs 变量并稍后将对象加载到其中怎么办?喜欢:
var dogs = ???
dogs = realm.objects(Dog)
在这种情况下,可变狗的类型应该是什么?
【问题讨论】:
这真的很基础,但我只是找不到如何使用 Swift 从 Realm 数据库中获取所有类型的对象。是的,是的:
var dogs = try! Realm().objects(Dog)
但是如果我想事先声明和初始化dogs 变量并稍后将对象加载到其中怎么办?喜欢:
var dogs = ???
dogs = realm.objects(Dog)
在这种情况下,可变狗的类型应该是什么?
【问题讨论】:
Realm.objects(_:) 具有以下签名:
public func objects<T: Object>(type: T.Type) -> Results<T>
签名告诉你,当你以realm.objects(Dog) 调用函数时,返回类型将为Results<Dog>。
如果您希望声明变量并稍后在同一个函数中对其进行初始化,您可以简单地将声明与初始化分开,如下所示:
let dogs: Results<Dog>
// …
dogs = realm.objects(Dog)
如果你声明一个成员变量并且需要在init之后初始化它,你应该声明为一个可选并且使用var:
var dogs: Results<Dog>?
// …
dogs = realm.objects(Dog)
【讨论】:
除了结果,您还可以使用列表。如果您在 One:Many 示例中返回对象,这将非常有用。
如果您有两个模型 Country 和 City,其中一个 Country 可以有多个城市。
var rlmCountry: Country!
var rlmCities: List<City>?
rlmCities = rlmCountry.cities
【讨论】: