我试图按照以下方式对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的初始化方式有关,但不知道如何处理它
答案 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不是虚假的东西,但无法找到该语法