我有一个过滤器,我试图用它来比较一个值到另一个值。这是我正在使用的枚举:


 枚举SomeEnum:String {

 case first =“嘿”
 case second =“There”
 case third =“Peace”

 static let values = [first,second,third]

 func pickOne() - >字符串{
切换自我{
 case.first:
返回“值1”
 case .second:
返回“值2”
 case .third:
返回“值3”
 }
}



 以下是我尝试过滤和查找匹配值的位置:

 
 array.append(SomeEnum.values.filter({$ 0.rawValue == anotherArray [“id”] as!String}))



 我最终得到一个含糊不清的错误:


 无法将'[SomeEnum]'类型的值转换为预期的参数输入'String'



 任何想法?

答案 0 :(得分:1)
问题是,SomeEnum.values
返回类型为[SomeEnum]
而不是String
。
append
函数要求参数为String
,而不是[SomeEnum]
。
这就是你需要改变的地方:
append
更改为appendContentsOf
,因为filter
函数返回一个数组,而不是单个值[SomeEnum]
更改为[String]
,因为您要将其添加到[String]
数组中,就像这样。这是修复:
array.appendContentsOf(SomeEnum.values.filter({ $0.rawValue == "SomeString" }).map({ $0.PickOne() }))