класс ViewController: UIViewController { @IBOutlet var fname: UILabel!
struct Class: Codable {
let FName: String
let LName: String
enum CodingKeys: String, CodingKey {
case FName = "first_name"
case LName = "last_name"
}
}
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://domain(^_^).com/users.php")
URLSession.shared.dataTask(with: url!, completionHandler: {(data, response, error) in
guard let data = data, error == nil else { print(error!); return }
let decoder = JSONDecoder()
let classes = try! decoder.decode([Class].self, from: data)
for myClass in classes {
print(myClass.FName)
print(myClass.LName)
}
DispatchQueue.main.async {
self.fname.text = "I don't know what to wirte here to change the label to the data which I get fron database"
}
}
).resume()
}
}
В конце концов, я просто не знаю, как переписать текст моей метки в данные, которые я получаю из базы данных. Я пытался отобразить данные в TableView, но у меня не получилось, единственный способ получить помощь здесь, YouTube не смог мне помочь.
Вы должны читать данные JSON с помощью JSONDecoder, только если вы уверены, что можете вписать данные в свою кодируемую модель. Другими словами, с JSONSerialization будет проще читать данные.
@Larme Я пытаюсь получить данные из базы данных, и я это сделал. Я получаю имя и фамилию из базы данных и хочу отобразить их на дисплее.
Просто согласно вашему коду у вас должно быть 3, 4, n Class объектов, потому что classes — это массив. Итак, если вы хотите поставить первое, if let fName = classes.first.FName { self.fname.text = fName}, если хотите второе, замените classes.first.FName на classes[1].FName и т. д.
ты классный братан, теперь это работает. Большое спасибо :). @Ларме

Попробуй это!!
for myClass in classes {
print(myClass.FName)
print(myClass.LName)
DispatchQueue.main.async {
self.fname.text = myClass.FName
self.lname.text = myClass.LName // In case you have second label
}
}
спасибо за Ваш ответ. Я уже пробовал это, но это не сработало.
У вас есть массив из
Classeобъектов. Что вы хотите показать для своего лейбла? Откуда?