问题描述
我已将一些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
}