Reputation: 2330
I'm trying to filter an array of custom objects in swift to get back a subset of data that has properties I want to isolate. My code is as follows.
func generateSubset( dataPool : [CustomObject]) -> [CustomObject]? {
let subsetData = dataPool.filter{(includeElement:CustomObject)-> Bool in
return contains(includeElement.position, "TEACHER")
}
return subsetData
}
My custom object is as follows:
class CustomObject : {
var position : String?
init(){
position = ""
}
}
However the error Xcode throws me when trying to compile this code is:
Cannot invoke 'filter' with an argument list of type [CustomObject] -> Bool
I'm using Swift 1.2 and can't seem to figure out what I'm doing wrong. Any help would be appreciated.
Upvotes: 4
Views: 5747
Reputation: 118651
In Swift 1.2, filter
is a global function, so you can't say dataPool.filter(...)
. (In Swift 2, this will work.)
Furthermore, contains
can't be used with Strings like that. I would recommend using the rangeOfString:
method from NSString:
let teachers = filter(dataPool) { // in Swift 2 this would be "dataPool.filter {"
return $0.position!.rangeOfString("TEACHER") != nil
}
Upvotes: 5