Swift Realm过滤关系对象

时间:2016-08-28 12:35:20

标签: swift2 realm

我试图按照以下方式对Realm对象列表进行过滤。

我有两个对象Category和Company

class Category: Object {
    dynamic var name = ""
    dynamic var isActive = true
    let companies = List<Company>() 
}

class Company: Object {
    dynamic var name = ""
}

该类别从一个控制器发送到另一个控制器,以便显示该类别中的所有公司

var category: Category!
var rlmCompanies: List<Company>?

到目前为止一切顺利,从中我可以显示公司列表。但是,我正在尝试在控制器的顶部添加一个开关栏,这样我就可以进一步过滤显示的公司列表,看它们是否有效。

我正在尝试的代码是我尝试过以下其中一项的代码

rlmCompanies = category.companies.filter("ANY isActive == true")
rlmCompanies = category.companies.filter("ANY companies.isActive == true")
rlmCompanies = category.companies.filter("companies.isActive == true")
rlmCompanies = rlmCompanies.filter("ANY companies.isActive == true")
rlmCompanies = self.rlmCompanies.filter("ANY companies.isActive == true")

所有这些尝试都会产生类似的错误:

No filter candidates produce the expected contextual result type List<Company>
因此,我没有想法。我可以看到这与List的初始化方式有关,但不知道如何处理它

2 个答案:

答案 0 :(得分:0)

您看到的错误是因为您尝试将Results<T>返回的List.filter分配给List<T>类型的变量。您的rlmCompanies实例变量应该是Results<Company>类型。

答案 1 :(得分:0)

最后,我通过以下方式更改了代码

我将初始化程序更改为结果对象

var rlmCompanies: Results<Company>?

然后当我创建初始List时,我添加了一个返回all的过滤器,因此返回Result而不是List

rlmCompanies = category.companies.filter("id <> 'somethingbogus' ")

我理想情况下会有类似ANY的内容,而不是id不是虚假的东西,但无法找到该语法