将解码的 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
}
我已经将一些 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
}