【问题标题】:Swift how to declare realm results?Swift如何声明领域结果?
【发布时间】:2017-06-10 16:57:31
【问题描述】:

如何声明 Results 通用

我想在UITableViewController 中将其声明为全局变量并填写在viewDidLoad func 中

这是我的代码

class ContactsController: UITableViewController {
    var contacts = Results<Contact>()

        override func viewDidLoad() {
            super.viewDidLoad()
            contacts = Domain.FetchContacts()
        }
}

但我得到错误

无法调用类型“结果”的初始化程序,没有 论据

如何申报?

【问题讨论】:

    标签: ios swift realm


    【解决方案1】:

    我这样声明结果是通用的

    var contacts: Results<Contact>? = nil
    

    【讨论】:

    • 对于未来的读者,这不是通用的;如结果。领域结果是同质的(只能存储一种类型的对象),Results 只会存储领域联系人类。
    【解决方案2】:

    您可以像这样声明contacts

    var contacts: Results<Contact>!
    

    var contacts: Results<Contact>?
    

    【讨论】:

    • 我不能这样声明。类型名称后的预期成员名称或构造函数调用
    【解决方案3】:
    var contacts: Results<Contact> = realm.objects(Contact.self).filter("FALSEPREDICATE")
    

    【讨论】:

      【解决方案4】:

      您需要将您的声明设为可选类型。删除 () 并放入 ?像 var contacts = Results 这样的变量声明之后?

      【讨论】:

      • 我不能这样声明。类型名称后的预期成员名称或构造函数调用