arrays - 如何检查复杂数组中的相似数据

标签 arrays swift if-statement key-value

在这里,我获取了一个随机用户并替换了用户数组中的一个用户。但是,我想检查一下我刚从 random1 获得的那个用户是否已经在用户中。我想通过他们的 id 来检查。我知道它必须是一个 if 语句,但我不知道如何实际检查它是否包含在用户中。此外,在 if 语句的主体中,我将不得不进行递归。如果我再次调用它自己,我是否可以只传递 getRandom1(index:index),或者它是否不再记得我最初调用它时的索引是什么?

 struct User: Decodable {
var id: Int
var first_name: String
var last_name: String
var picture_url: String
var points: Int
var school: String
var grade: Int
}

var users = [User]()

func getRandom8() {
let url = URL(string: "https://somewebsite.com/users/random/eight")
let session = URLSession.shared

let request = NSMutableURLRequest(url: url!)
let preferences = UserDefaults.standard
request.addValue("JWT \(preferences.object(forKey: "token") as! String)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpMethod = "GET"

let task = session.dataTask(with: request as URLRequest, completionHandler: {
    (data, response, error) in
    do {
        self.users = try JSONDecoder().decode([User].self, from: data!)

        DispatchQueue.main.async (
            execute: self.loadRandom8
        )

    } catch {
        print("error in getting data")
    }
})

task.resume()

}

func getRandom1(index:Int) {
let url = URL(string: "https://somewebsite.com/users/random/one")
let session = URLSession.shared

let request = NSMutableURLRequest(url: url!)
let preferences = UserDefaults.standard
request.addValue("JWT \(preferences.object(forKey: "token") as! String)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpMethod = "GET"
//write a statement that says if that user is already there, do the call again
let task = session.dataTask(with: request as URLRequest, completionHandler: {
    (data, response, error) in

    do {
        let user = try JSONDecoder().decode(User.self, from: data!)
            self.users[index] = user

//if statement should go here
        DispatchQueue.main.async (
            execute: self.loadRandom8
        )

    } catch {
        print("error in getting data")
    }
})

task.resume()

}

最佳答案

你可以试试

if users.contains(user) {
   // user in the array
}

还要确保你为 User 实现了 Equatable 协议(protocol)

关于arrays - 如何检查复杂数组中的相似数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51225477/

相关文章:

swift - 基于 View 的 NSTableView 中的拖放问题

swift - Swift Property Wrapper 能否引用其包装属性的所有者?

jquery - 如果 div 没有包含某个类的 div,请执行某些操作。 jQuery

linux - 需要帮助创建 Linux 脚本

java - 数组成员(Java 数组理论)

Objective-C 无法将 NSNumber 转换为 int

swift - 字典作为数组的通用元素

javascript - 如何从数据源文件设置 var 值?

c# - 如何从此数组中检索信息?

javascript - 如何在不选择模式配置参数的情况下使用 Mongoose 在 MongoDB 模式实例化的关联数组/对象中执行 foreach?