arrays - 如何检查复杂数组中的相似数据
问题描述
在这里,我得到一个随机用户并替换用户数组中的一个用户。但是,我想检查我刚刚从 random1 获得的那个用户是否已经在用户中。我想通过他们的身份证检查。我知道它必须是一个 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
}
还要确保你实现Equatable
协议User
推荐阅读
- php - Laravel 5.7.2 视图中未定义的变量
- blockchain - TronBox 初始化错误或与 TronBox 相关的命令
- android-studio - Android Studio 错误:java.lang.UnsupportedOperationException
- python - 按列名(不是值/int)合并两个df?
- javascript - 一键推送mongoose中的数组列表
- java - 在 jdk 11 中序列化 xml 文档时 LSSerializer 缺少 xmlns 属性(在 jdk 8 中工作正常)
- api - lex:我们计算的请求签名与您提供的签名不匹配。检查您的 AWS 秘密访问密钥和签名方法
- android - 等价于 Kotlin 协程中的 observeOn 和 subscribeOn
- python - 如何让不是所有的数据都使用选择字段显示,而只显示与 Django 中的选择字段相关的数据?
- elasticsearch - 如何使用 Logstash 从 Elasticsearch 获取数据并将其放入 Graphite?