2015-08-16 84 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

相關問題