将解码的 JSON 数据设置为 Swift 中的 UITextFields - 非字符串问题

Setting decoded JSON data to UITextFields in Swift - issues with non-strings

我已经将一些 JSON 数据解码到我的一个视图控制器中的数组中。这是我的 JSON 数据的结构:

struct Country: Codable {
    var id: Int
    var country: String
    var capital: String
    var nationalLanguage: [String]
    var population: Int
}

我将 tableView 中选定行的所有数据传递给单独视图控制器中类型为 属性 的国家/地区。我已经评论了有错误的行。

class DetailViewController: UIViewController {
    
    @IBOutlet var idTextField: UITextField!
    @IBOutlet var nameTextField: UITextField!
    @IBOutlet var capitalTextField: UITextField!
    @IBOutlet var languageTextField: UITextField!
    @IBOutlet var populationTextField: UITextField!
    
    var countryItem: Country?
    
    override func viewDidLoad() {
        
        idTextField.text = countryItem?.id // Error
        nameTextField.text = countryItem?.country
        capitalTextField.text = countryItem?.capital
        languageTextField.text = countryItem?.nationalLanguage // Error
        populationTextField.text = countryItem?.population // Error
        
    }
}

错误显示:

Expression type '()' is ambiguous without more context

我知道这是因为这三种数据类型不是字符串类型,但我不确定我需要做什么来解决这个问题。将它们作为字符串进行类型转换不起作用,并出现以下错误:

Initializer 'init(_:)' requires that 'Int?' conform to 'LosslessStringConvertible'

您将 Int/array 设置为 UITextField 的字符串 text 值 您需要

if let res = countryItem {
   idTextField.text = String(res.id) // Error Int set to String
   nameTextField.text = res.country
   capitalTextField.text = res.capital
   languageTextField.text = res.nationalLanguage.first // Error Array to String
   populationTextField.text = String(res.population) // Error Int set to String
}