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

问题描述

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

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

我将tableView中选定行的所有数据传递到单独的视图控制器中的Country类型的属性中。我对出现错误的行进行了评论。

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设置为text的字符串UITextField

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
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...