【发布时间】:2015-09-03 05:51:33
【问题描述】:
我在目标 c 中的旧功能是
+ (NSUInteger)getNumberOfDistinctUsers:(NSArray *)users {
NSArray* usersAfterPredicate = [users valueForKeyPath:@"@distinctUnionOfObjects.userName"];
return [usersAfterPredicate count]; }
我如何快速转换它,我试图这样但它崩溃了“无法将'Swift.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 来解决这个问题吗?我只是想使用属性用户名在用户数组中找出不同的用户。
编辑*蛮力方式
static func getNumberOfDistinctUsers(users: [ICEPKReferenceDataUser]) -> Int {
var retvalSet : Set<String> = []
for user in users {
retvalSet.insert(user.userName)
}
return retvalSet.count
}
【问题讨论】:
标签: objective-c swift functional-programming