一尘不染

在Swift中过滤自定义对象的数组

swift

我正在尝试快速过滤自定义对象的数组,以获取具有我要隔离的属性的数据子集。我的代码如下。

func generateSubset( dataPool : [CustomObject]) -> [CustomObject]? {

            let subsetData = dataPool.filter{(includeElement:CustomObject)-> Bool in
                return contains(includeElement.position, "TEACHER")
            }

        return subsetData
    }

我的自定义对象如下:

   class CustomObject :  {
        var position : String?

        init(){
          position = ""
        }
    }

但是,尝试编译此代码时,Xcode引发的错误是:

Cannot invoke 'filter' with an argument list of type [CustomObject] -> Bool

我正在使用Swift 1.2,似乎无法弄清楚自己在做什么。任何帮助,将不胜感激。


阅读 307

收藏
2020-07-07

共1个答案

一尘不染

在Swift 1.2中,filter是一个全局函数,因此您不能说dataPool.filter(...)。(在Swift 2中,这将起作用。)

此外,contains不能与此类字符串一起使用。我建议使用rangeOfString:NSString中的方法:

let teachers = filter(dataPool) { // in Swift 2 this would be "dataPool.filter {"
    return $0.position!.rangeOfString("TEACHER") != nil
}
2020-07-07