【发布时间】:2018-07-05 01:45:19
【问题描述】:
我有一个对象数组,我想通过两个条件过滤它们,如果对象在某个组中,或者如果它具有某个名称,但我不知道为什么它不起作用。
这是我的代码:
let outputfiler = array.filter({$0.group.contains (where: {$0 == "groupBig" }) } || $1.name.contains(where: {$1 == "Eis"}) )
这是我得到的错误:
匿名闭包参数不包含在闭包中
编辑: 组是一个字符串数组, 命名只是一个字符串。
我也试过这个:
outputfiler = array.filter{$0.group.contains (where: {$0 == "groupBig" }) || $0.name(where: {$0 == "Eis"}) }
然后我得到这个错误:
Extraneous argument label 'where:' in call
【问题讨论】:
-
过滤器采用单个闭包,闭包内可以有多个布尔表达式。因此,首先确保您的 array.filter 后跟 { 而不是 (.
-
我做了您建议的更改,但不起作用
-
如果名称是
String属性,$0.name(where:)没有任何意义。您是否尝试测试是否包含子字符串“Eis”或等于“Eis”?在后一种情况下,使用array.filter{ $0.group.contains("groupBig") || $0.name == "Eis" }。在前者中,contains(where:)仅处理Character,因此您需要不同的 API
标签: arrays swift filter contains