域上的Swift筛选项

域上的Swift筛选项,swift,realm,Swift,Realm,我想根据“carData”、“carData2”、“carData3”这三个属性筛选领域数据库中的项。这些属性来自用户在每三个文本字段上键入的内容。我想让用户能够根据他们使用的文本字段过滤项目。我可以过滤 if (carData != "" && carData2 != "" && carData3 != "") { selectedCar = selectedCar?.filter("(carCountry == %@ && c

我想根据“carData”、“carData2”、“carData3”这三个属性筛选领域数据库中的项。这些属性来自用户在每三个文本字段上键入的内容。我想让用户能够根据他们使用的文本字段过滤项目。我可以过滤

 if (carData != "" && carData2 != "" && carData3 != "") {
        selectedCar = selectedCar?.filter("(carCountry == %@ && carColor == %@ && carBrand == %@) OR (carCountry == %@ && carBrand == %@ && carColor == %@) OR (carColor == %@ && carCountry == %@ && carBrand == %@)", carData, carData2, carData3, carData, carData3, carData2, carData2, carData, carData3)
 }

这一部分,但其他两部分根本不起作用。

我认为您在搜索参数中有问题

如果参数类型为字符串,则使用
包含

示例:-

(carCountry == %@ && carColor == %@ && carBrand == %@)
let someDogs = realm.objects(Dog.self).filter("name contains 'Fido'")
如果参数类型为Int,则使用
=

示例:-

(carCountry == %@ && carColor == %@ && carBrand == %@)
let someDogs = realm.objects(Dog.self).filter("name contains 'Fido'")

请根据您的参数类型进行尝试。

什么是carData?是绳子吗?或者什么是selectedCar?它是数组吗?首先,如果您试图创建它,以便用户可以在他们选择的任何字段中输入数据-这似乎很奇怪-您需要6种组合来覆盖所有选项,而不是您拥有的三种组合PPL:它是数组。结果。我使用领域。拉塞尔:我知道我必须写6个组合。但我认为现在没有必要写。不管怎样,你已经达到了我想要的完美境界。你试过
|
而不是
?仅供参考,您编写的所有3个条件都是相同的,您移动了条件2中的参数,但也移动了输入carData2和carData3。我首先尝试了CONTAINS。但它也不起作用。我认为(carCountry==%@&&carColor==%@&&carBrand==%@)此部分在任何情况下都优先启动。所以后面的部分不会被引用。我想在tableView上显示过滤后的结果。当我在过滤器的第一部分输入文本时,它工作得非常好。然而,当我尝试使用后面的另外两个部分时,我得到了空白的tableView。因此,可能在selectedCar属性上设置了任何值。