领域结果对象类型

Tim*_*Sim 2 realm ios swift

这是非常基本的,但我无法找到如何使用Swift从Realm数据库中获取类型的所有对象.是的是的:

var dogs = try! Realm().objects(Dog)
Run Code Online (Sandbox Code Playgroud)

但是如果我想事先声明并初始化dog变量并稍后将对象加载到其中呢?喜欢:

var dogs = ???
dogs = realm.objects(Dog)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,变量狗的类型应该是什么?

bda*_*ash 7

Realm.objects(_:) 有以下签名:

public func objects<T: Object>(type: T.Type) -> Results<T>
Run Code Online (Sandbox Code Playgroud)

签名告诉您,当您调用函数时realm.objects(Dog),返回类型将是Results<Dog>.

如果您希望声明变量并稍后在同一函数中对其进行初始化,则可以简单地将声明与初始化分开,如下所示:

let dogs: Results<Dog>

// …

dogs = realm.objects(Dog)
Run Code Online (Sandbox Code Playgroud)

如果要声明成员变量并需要在之后对其进行初始化init,则应将其声明为可选并使用var:

var dogs: Results<Dog>?

// …

dogs = realm.objects(Dog)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.我浪费了一个小时十分钟.人们想知道为什么Realm docs会在他们最基本的例子中使用类型推断,比如网站墨水很贵或者其他东西. (2认同)