我在数组中有“ UserDetails”结构对象。我想从数组中过滤对象。但是Swift数组中没有“ filteredArrayUsingPredicate”选项。
我的阵列创作
var arrayOfUsers: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哪个用户ID为“ 1”的用户。
arrayOfUsers
Swift数组有一个.filter需要闭包的方法-可以做到这一点:
.filter
let filteredArray = arrayOfUsers.filter() { $0.userID == "1" }
可以通过多种方式简化封闭过程。闭包的完整声明看起来像这样:
var filteredArray = arrayOfUsers.filter( { (user: UserDetails) -> Bool in return user.userID == "1" })
两者之间的区别在于,第一种是使用结尾闭包语法,速记参数名称,类型推断和隐式返回。您可以在Apple的Swift文档中阅读有关闭包的更多信息。