Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 复合筛选器数组的领域查询_Ios_Swift_Realm - Fatal编程技术网

Ios 复合筛选器数组的领域查询

Ios 复合筛选器数组的领域查询,ios,swift,realm,Ios,Swift,Realm,我想查询具有多个筛选器的所有产品,例如: 所有产品具有:[(名称:“饼干”,品牌:“x品牌”),(名称:“水”,品牌:“y品牌”)] 如果我只有一个过滤器,例如(名称:“cookies”,品牌:“brand x”)那么答案就会很清楚:名称==\(tuple.name)和品牌==\(tuple.brand) 如果我有多个元组,但只有一个属性,那么也很清楚: return "name IN {\(["cookies", "water"].joined(separator: ","))}" 但是如何

我想查询具有多个筛选器的所有产品,例如:

所有产品具有:
[(名称:“饼干”,品牌:“x品牌”),(名称:“水”,品牌:“y品牌”)]

如果我只有一个过滤器,例如
(名称:“cookies”,品牌:“brand x”)
那么答案就会很清楚:
名称==\(tuple.name)和品牌==\(tuple.brand)

如果我有多个元组,但只有一个属性,那么也很清楚:

return "name IN {\(["cookies", "water"].joined(separator: ","))}"
但是如何为元组数组编写过滤器呢?一个想法是使用前面的查询
name==\(tuple.name)和brand==\(tuple.brand)
将每个结果作为单个
Results
获取,并用它构建一个数组,但我需要的是
Results
中的最终结果,而不是数组

也可能是这样,但我认为这是不可能的

return "name::brand IN {\(["cookies::brand x", "water::brand y"].joined(separator: ","))}"

似乎要将谓词与以下内容组合在一起:

class Product: Object {
    dynamic var name = ""
    dynamic var brand = ""
}

let productsFilter: [(name: String, brand: String)] = [("cookies", "brand x"), ("water", "brand y")]
let subPredicates = productsFilter.map {
    NSPredicate(format: "name = %@ && brand = %@", $0.name, $0.brand)
}
let compoundPredicate = NSCompoundPredicate(orPredicateWithSubpredicates: subPredicates)

let realm = try Realm()
let products = realm.objects(Product.self).filter(compoundPredicate)