一尘不染

SwiftArray中不存在filteredArrayUsingPredicate

swift

我在数组中有“ 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”的用户。


阅读 310

收藏
2020-07-07

共1个答案

一尘不染

Swift数组有一个.filter需要闭包的方法-可以做到这一点:

let filteredArray = arrayOfUsers.filter() { $0.userID == "1" }

可以通过多种方式简化封闭过程。闭包的完整声明看起来像这样:

var filteredArray = arrayOfUsers.filter( { (user: UserDetails) -> Bool in
        return user.userID == "1"
    })

两者之间的区别在于,第一种是使用结尾闭包语法,速记参数名称,类型推断和隐式返回。您可以在Apple的Swift文档中阅读有关闭包的更多信息

2020-07-07