ios - 将“获取”请求数据分配给文本字段
问题描述
我的获取数据响应就像
我希望“标题”和“日期”应该显示在我的视图控制器“标签值”中
应用程序运行时获取方法调用,数据应显示在文本字段“或”标签中
我的代码是
guard let url = URL(string: "https://jsonplaceholder.typicode.com/users") else { fatalError() }
let session = URLSession.shared
session.dataTask(with: url) { (data, response, error) in
if let response = response {
print(response)
}
if let data = data {
print(data)
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
} catch {
print(error)
}
}
}.resume()
输出是:
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
},
{
"id": 2,
"name": "Ervin Howell",
"username": "Antonette",
"email": "Shanna@melissa.tv",
"address": {
"street": "Victor Plains",
"suite": "Suite 879",
"city": "Wisokyburgh",
"zipcode": "90566-7771",
"geo": {
"lat": "-43.9509",
"lng": "-34.4618"
}
},
]
我想打印“用户名”:“电子邮件”:我的故事板标签中的值
解决方案
结果包含多个用户,因此您应该首先遍历它们并找到您想要的用户。然后,您可以在主线程中的 UI 元素上设置文本。
guard let url = URL(string: "https://jsonplaceholder.typicode.com/users") else { fatalError() }
typealias User = [String: Any]
let session = URLSession.shared
session.dataTask(with: url) { (data, response, error) in
if let response = response {
print(response)
}
if let data = data {
print(data)
do {
let usersJson = try JSONSerialization.jsonObject(with: data, options: []) as! [User]
print(usersJson)
// Since the result is an array of users
for user in usersJson {
guard let userName = user["username"] as? String else { return assertionFailure("Invalid username") }
print(userName)
// All UI works should done in main thread
DispatchQueue.main.async {
<#usernameLabel#>.text = username
}
}
} catch {
print(error)
}
}
}.resume()
我建议你看看Swift Codable。它将提高您的编码并最大限度地减少语法和人为错误。
推荐阅读
- java - 在初始化私有静态变量时使用 getClass() 进行同步是个坏主意吗?
- python - 更新 Pandas Dataframe 列 A 中的所有值,仅当 B 中的值不为零时才使用列 B 的值
- spring-boot - Axon 4 XStream 配置
- azure - Azure 无法创建 SendGrid 帐户,验证失败
- python - 如何在 Python Flask 中使用 Wrapper 对象包装 REST API 响应
- kotlin - kotlin 如何以及何时让运行?
- google-cloud-platform - Google Cloud Platform - 我可以找出 403 响应的原因吗?
- python - 使用 Docker 设置 python 开发环境(在 vscode 中使用 linting 和代码完成)
- python - 预训练的 Fasttext 模型为词汇表外的单词返回乱码
- sass - 不明确的 SCSS 错误意外字符 '' (1:4)