ios - 将 "Get"请求数据分配给文本字段

标签 ios json swift dictionary get

我的获取数据响应是这样的

我希望“标题”和“日期”应该显示在我的 View Controller “标签值”中

应用程序运行时获取方法调用,数据应显示在标签中的“或”文本字段中

我的代码是

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"
      }
    },
]

我想打印“用户名”: “电子邮件”: 我的 Storyboard 标签中的值

最佳答案

结果包含多个用户,所以你应该先遍历他们并找到你想要的用户。然后,您可以在 主线程 中的 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。它将提高您的编码效率并最大限度地减少语法错误和人为错误。

关于ios - 将 "Get"请求数据分配给文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56273560/

相关文章:

ios - 将大量数据从核心数据导出到json

json - 高级 json-schema 每个属性有多个规则

jquery - 我可以将 CSS "theme"作为 JSON 文档存储在 CouchDB 中吗? (然后加载并应用它?)

swift - Xcode UI 测试记录器生成带有多个选项的长行

ios - 无法安装 Firebase iOS SDK (v3.2.0)

ios - 将按钮添加到导航 Controller 中心

ios - XCode 升级后无法为 iOS 编译

Java JSON 库支持在没有模式的情况下获取和设置深层值吗?

ios - swift PDFKit : Unable to scale view to a small size

iphone - iOS:录制语音编码的音频格式,用于网络传输