我有“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方法,它接受一个闭包 – 这样做:
原文链接:https://www.f2er.com/swift/321334.htmllet 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。