Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 分配;获得;向文本字段请求数据_Ios_Json_Swift_Dictionary_Get - Fatal编程技术网

Ios 分配;获得;向文本字段请求数据

Ios 分配;获得;向文本字段请求数据,ios,json,swift,dictionary,get,Ios,Json,Swift,Dictionary,Get,我的get data响应如下 我希望“标题”和“日期”应显示在我的视图控制器“标签值”中 在应用程序运行时获取方法调用,数据应显示在标签中的文本字段“或”中 我的代码是 guard let url = URL(string: "https://jsonplaceholder.typicode.com/users") else { fatalError() } let session = URLSession.shared session.dataTask(with: url) { (data,

我的get data响应如下

我希望“标题”和“日期”应显示在我的视图控制器“标签值”中

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

我的代码是

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()
guard let url=url(字符串:https://jsonplaceholder.typicode.com/users)否则{fatalError()}
typealias用户=[字符串:任意]
让session=URLSession.shared
中的session.dataTask(带有:url){(数据、响应、错误)
如果让响应=响应{
打印(答复)
}
如果let data=data{
打印(数据)
做{
让usersJson=try JSONSerialization.jsonObject(使用:data,选项:[])作为![User]
打印(usersJson)
//因为结果是一个用户数组
对于usersJson中的用户{
guard let userName=user[“userName”]as?String else{return assertionFailure(“无效用户名”)}
打印(用户名)
//所有UI工作都应该在主线程中完成
DispatchQueue.main.async{
.text=用户名
}
}            
}抓住{
打印(错误)
}
}
}1.简历()

我建议您看看Swift Codable。它将提高您的编码效率,并最大限度地减少语法和人为错误。

您尝试过什么吗?我有obj-c代码我是obj-c开发人员现在我必须使用swift,因此您应该使用
完成
块。如果你把你的试用代码放在这里,我们可以帮你。我在这次回复中更新了我的问题,你有多个用户信息,那么你想打印哪个用户名?第一个还是第二个?谢谢你,Hosseini,但是如何收发电子邮件?你知道“字典”吗?你可以用你需要的任何键替换“username”,比如:user[“email”]我在按钮操作中这样写,点击按钮两次只更改标签文本我不知道为什么我要通过点击一次让username=user[“emp_name”]来更改它?String else{return assertionFailure(“无效用户名”)}print(username)guard let email=user[“title”]as?字符串else{返回断言失败(“无效电子邮件”)}打印(电子邮件)。DispatchQueue.main.async{self.nameTxField.text=userName self.passwordTxField.text=email}