如何将字典加载到UIPickerView中
如何将字典中的数据加载到Swift中的PickerView中?如何将字典加载到UIPickerView中
我有一个String
键(美国)和Double
值(税),我想要做的是能设置键作为UIPickerView的titleForRow
和显示所选key
的价值在什么字典textField
。
// Ideal Dictionary
private var states:[String:Double] = ["Alabama":6.000, "Illinois":7.000, "Oregon":8.000, "Wisconsin":9.000]
我是能够做到上面使用两个阵列,一个是美国,一个是税收什么描述我,但我拒绝认为,从字典中加载是不可能的。
这是我现在有工作,但使用两个数组。
// Arrays
private var stateName = ["Alabama", "Illinois", "Oregon", "Wisconsin"]
private var stateTax = ["6.000", "7.000", "8.000", "9.000"]
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return stateName.count
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
inputTaxRate.text = stateTax[row]
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return stateName[row]
}
任何建议,以改善上述代码?
词典是无序的,所以你最好使用数组。 您可以使用一个名为元组的阵列,让您的数据集中在一个阵列:
let stateInfo:[(name: String, tax: Double)] = [("Alabama", 6.000), ("Illinois", 7.000), ("Oregon", 8.000), ("Wisconsin", 9.000)]
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return stateInfo.count
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
inputTaxRate.text = stateInfo[row].tax
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return stateInfo[row].name
}
您可以使用字典,但字典没有顺序。你想要订购你的数据。如果顺序是按字母顺序排列的,则可以将字典有效地转换为您现在具有的两个数组。您不希望在每次拨打titleForRow
时都这样做,因此您希望阵列永久保存。如此,你的两个阵列变成了一个非常好的解决方案。您以无情的效率获取数据,这正是您想要的。
酷,我想我不知道,因为这两个阵列不互相关联,如果一个由于某种原因改变了这种关系,但我想这只是一个牢记这一点的问题,如果对一个方面做了改变,那么这两方面都需要完成。非常感谢。你的书的大风扇:)。 –
谢谢。那么,你可以保留一个单一的状态数组对。这将解决更新问题。 Vacawama完全正确。对可以是元组或数组,甚至可以是自定义结构。 – matt
非常感谢您的帮助。 –
非常感谢您的建议,我喜欢这种方法。 –
@ vacawama快速的问题,我想封装在一个类中的数组,但我不知道如何返回元组数组。私人让stateInfo:[(name:String,tax:Double)] = [ (“Alabama”,6.000), (“Illinois”,7.000), (“Oregon”,8.000), ( “威斯康星”,9.000) ] VAR税:阵列 - >(名称:字符串,年龄:智力){ 获得{ 回报将stateInfo } } }'我如何从一个类返回数组? –
不应该是'var tax:[(name:String,tax:Double)] {get {return stateInfo}}'? – vacawama