@H_
301_0@
我有“UserDetails”结构对象在数组。我想从数组中过滤对象。但是在Swift数组中没有“filteredArrayUsingPredicate”的选项。
我的数组创建
var arrayOfUsers:UserDetails[] = UserDetails[]()
我的userdetails代码是
struct UserDetails{
var userName:String
var userID:String
var userAge:String
func userDescription()->String{
return "name " + userName + "age " + userID
}
}
我的代码创建对象
for a in 1...1000{
var user:UserDetails = UserDetails(userName: "name",userID: String(a),userAge: "22")
arrayOfUsers.append(user)
}
现在我想过滤arrayOfUsers哪一个有userID“1”。
Swift数组有一个.filter
方法,它接受一个闭包 – 这样做:
let filteredArray = arrayOfUsers.filter() { $0.userID == "1" }
可以以多种方式简化闭合。关闭的完整声明看起来更像这样:
var filteredArray = arrayOfUsers.filter( { (user: UserDetails) -> Bool in
return user.userID == "1"
})
两者之间的区别是,第一个使用尾随闭包语法,简写变量名,类型推断和隐式返回。你可以读more about closures in Apple’s Swift documentation。