2015-08-16 54 views
4

我想在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 

我使用雨燕1.2和能我似乎无法弄清楚我做错了什么。任何帮助,将不胜感激。

回答

5

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

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

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

谢谢,这个作品完美。 – zic10

相关问题