gpt4 book ai didi

从 URL 到 UITextlabel 的 Swift4 常量

转载 作者:行者123 更新时间:2023-11-28 10:34:33 25 4
gpt4 key购买 nike

抱歉格式化(无法正确设置)

我是 Swift4 的新手。我设法从 url 获取了一些 JSON 数据。虽然我能够打印此信息,但我无法在 Storyboard上输出此信息。

我有一个按钮,当我单击它时,数据会被检索并打印到控制台中。我想将这些数据放入标签中。

我以为会很简单self.Label2.text = 标题但是没有内容添加到Label2。 (实际上点击按钮时标签消失了)

当我在标签中放置文本时,内容确实发生了变化。只是当我尝试将常量输出到 Storyboard 中时不是。

谁能告诉我我做错了什么?或者指出我正确的方向。提前致谢!

我尝试将 Label2 的值直接设置到 getJsonFromUrl 函数中。

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var Label1: UILabel!

@IBOutlet weak var Label2: UILabel!


override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

func getJsonFromUrl(){
navigationItem.title = "REST API"

guard let url = URL(string: "https://gipaa.nl/com_json.php") else {return}
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let dataResponse = data,
error == nil else {
print(error?.localizedDescription ?? "Response Error")
return }
do{
//here dataResponse received from a network request
let jsonResponse = try JSONSerialization.jsonObject(with:
dataResponse, options: [])


guard let jsonArray = jsonResponse as? [[String: Any]] else{
return
}


guard let title = jsonArray[0]["name"] as? String else{ return }
print(title)



} catch let parsingError {
print("Error", parsingError)
}
}
task.resume()
}


@IBAction func Button(_ sender: Any) {

view.backgroundColor = UIColor.purple

getJsonFromUrl()

self.Label2.text = title
self.Label1.text = "hmm"

}

}

title 的值放入 Label2

最佳答案

两个主要问题:

  1. guard let title = ... 创建一个超出范围的 local 变量。在 Button 函数中,您正在分配 UIViewControllertitle 属性,这是完全不同的东西。
  2. getJsonFromUrl 中的数据任务是异步工作的,你必须添加一个完成处理程序

    func getJsonFromUrl(completion: @escaping (String) -> Void) {

    ...

    guard let title = jsonArray[0]["name"] as? String else { return }
    completion(title)

    @IBAction func button(_ sender: Any) { // function names are supposed to start with a lowercase letter
    getJsonFromUrl { title in
    self.Label2.text = title
    }
    ...

关于从 URL 到 UITextlabel 的 Swift4 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54335019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com