我在这里收到“意外发现零致命错误”。基本上,我有一个选择器视图,您可以在其中从字典的参考键中选择选项。我想引用这些键来更新带有键内(随机)值的标签
这是我的意思的一个示例
func updateValue {
desiredValue = myDictionary[pickedKey]
}
“ pickedKey”是当前在选择器视图上选择的内容,它引用字典中的键。这是我遇到问题的pickedKey。如果我在其中对一个随机密钥进行硬编码就可以了,但是显然我希望用户在PIckerView中选择该密钥。
有人知道我为什么会收到零致命错误吗?它也不会让我将pickedKey声明为可选的,它说“不能用索引类型为'String的下标'[String:String]'的值”
更新:这是pickerView的代码
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
//the selected pick will be stored in pickedKey
pickedKey = pickerArray[row]
//the desired value will be the value from the picked key in myDictionary
desiredValue = myDictionary[pickedKey]!
foodLabel.text = desiredValue
}
请记住,pickerArray是myDictionary中的键数组
var pickerArray: Array = Array(myDictionary.keys.sorted())
答案 0 :(得分:0)
假设您的字典键是string
:
更新您的密钥排序
var pickerArray: [String] = myDictionary.keys.sorted()
以此替换您的didSelectRow。
var pickedKey: String?
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if
let pickedKey = pickerArray[row] as? String,
let desiredValue = myDictionary[pickedKey] {
foodLabel.text = desiredValue
} else {
// TODO: Error
}
}
请确保不要尝试强制使用强制转换,因为如果遇到问题,将会导致崩溃。