我試圖使用JSON從REST API顯示帶有字符串的UILabel,但沒有運氣。我可以將字符串打印到控制檯上,但是嘗試使用UILabel顯示此字符串時,它顯示爲空白。無法使用JSON數據更新UILabel
這是測試代碼,我有工作:
import UIKit
class List {
var title = String()
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let list = List()
callAPI()
let width = view.bounds.width
let height = view.bounds.height
let label: UILabel = {
let label = UILabel(frame: CGRect(x: 0, y: height/2 - 50, width: width, height: 50))
label.backgroundColor = UIColor.red
label.text = title
return label
}()
view.addSubview(label)
print("Label Text: \(list.title)")
}
}
let url = URL(string: "https://jsonplaceholder.typicode.com/todos/")
func callAPI() {
URLSession.shared.dataTask(with: url!, completionHandler: {
(data, response, error) in
if error != nil {
print(error!)
return
}
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! NSMutableArray
let array = json[0] as! [String:Any]
let title = array["title"] as! String
print("Title: \(title)")
let list = List()
list.title = title
}
catch let jsonError {
print(jsonError)
}
}).resume()
}
你的'List'類和'list'屬性有什麼用? – rmaddy
代碼'label.text = title'在調用API之前立即運行。您只能在完成處理程序運行期間或之後期待JSON的標題。這就是爲什麼你應該採取rmaddy的建議,並更新該處理程序的用戶界面。 – danh