拥有一组员工对象,称为员工,现在我想创建另一个名为filteremployees的数组,该数组只有id和出生日期值。 运用 让filteremployees = employee.map({$ 0.id}) 我可以得到只包含id值的数组,但我想要id以及dateOfBirth
class Employee {
var id: Int
var firstName: String
var lastName: String
var dateOfBirth: NSDate?
init(id: Int, firstName: String, lastName: String) {
self.id = id
self.firstName = firstName
self.lastName = lastName
}
}
答案 0 :(得分:2)
试试这个:
let employees : [Employee] = ...
let list: [(Int, NSDate?)] = employees.map { ($0.id, $0.dateOfBirth) }
您必须显式声明list
的类型,否则您会从编译器中获得此错误
在没有更多上下文的情况下,表达式的类型不明确。
使用Xcode 7 Playground和Swift 2.0测试。
希望这有帮助。
答案 1 :(得分:1)
您可以尝试使用相同的map方法并返回预期值的元组:
let filter employees: [(Int, NSDate?)] = employee.map({ ($0.id, $0.dateOfBirth) })
或者,我认为这是一个更好的解决方案,创建一个新的值类型并仅使用您所需的值创建
struct FilteredEmployee {
let id: String
let dateOfBirth: NSDate?
init(employee: Employee) {
id = employee.id
dateOfBirth = employee.dateOfBirth
}
}
然后你可以在数组
上映射初始化器 let filteremployees = employee.map { FilteredEmployee($0) }