我正在创建一个自定义iOS键盘,我正在尝试创建一个将使用JSON dict来查看要使用的符号的函数。
这是我的功能:
func switchSymbols(option: Int) {
for view in self.view.subviews {
if let button = view as? UIButton {
let buttonTag = button.tag
if (buttonTag > 0 && buttonTag < 100) {
if let text = symbolsDict?[buttonTag][option].stringValue {
print(symbolsDict)
button.setTitle(text, for: .normal)
}
}
}
}
}
这是创建查找字典的工厂函数:
func symbolsDictFactory() -> JSON {
var dict:JSON = [:]
dict[1][0] = "1"
dict[1][1] = "["
dict[2][0] = "2"
dict[2][1] = "]"
print(dict)
return dict
}
不幸的是,第二个函数产生一个空白的JSON数组。
很少丢失。任何帮助赞赏。提前谢谢。
答案 0 :(得分:1)
我建议不要在应用程序中使用JSON作为数据和模型。您的内部模型应该是强类型的。
实际上,JSON实际上是[String: Any]
类型,因为按钮标记和选项值都是整数,所以它不是您需要的。您在代码中描述的内容是[Int: [Int: String]]
。创建函数以返回符号查找表没有任何问题。但是,由于表是常量,因此将它作为包含类的属性可能更简单。
class View: UIViewController {
private let titleForButton = [
1: [0: "1", 1: "["],
2: [0: "2", 1: "]"],
// ...
99: [0: "", 1: ""]
]
func switchSymbols(option: Int) {
for view in self.view.subviews {
if let button = view as? UIButton {
if let title = titleForButton[button.tag]?[option] {
button.setTitle(title, for: .normal)
}
}
}
}
}
此外,对于button.tag在[1 ..&lt; 100]内的边界检查是不必要的,因为字典查找的返回值是可选的,并且不会为按钮标记设置标题。范围。