我的老功能的目標C是如何valueForKeyPath轉換中迅速
+ (NSUInteger)getNumberOfDistinctUsers:(NSArray *)users {
NSArray* usersAfterPredicate = [users valueForKeyPath:@"@distinctUnionOfObjects.userName"];
return [usersAfterPredicate count]; }
如何轉換這迅速,我想是這樣的,但它的崩潰「無法投類型的值「雨燕.Array'到'Swift.AnyObject'「
static func getNumberOfDistinctUsers(users: [ICEPKReferenceDataUser]) -> Int {
var retval : Int = 0
if let usersAfterPredicate = (users as! AnyObject).valueForKeyPath("@distinctUnionOfObjects.userName") {
retval = usersAfterPredicate.count
}
return retval
}
我可以使用filter,map或Reduce來解決這個問題嗎?我只是試圖找出使用屬性用戶名的用戶數組distint用戶。
編輯*蠻力方式
static func getNumberOfDistinctUsers(users: [ICEPKReferenceDataUser]) -> Int {
var retvalSet : Set<String> = []
for user in users {
retvalSet.insert(user.userName)
}
return retvalSet.count
}