我创建了一个二维的字典是这样,它精细编译:斯威夫特二维字典错误
var locale : [String : [String : String]] =
["en" : ["create" : "Create", "cancel" : "Cancel"],
"fr" : ["create" : "Creer", "cancel" : "Annuler"]]
但使用时:
var lang = NSUserDefaults.standardUserDefaults().objectForKey("MyLanguage") as! String
let createButton = UIBarButtonItem(title: locale[lang]["create"],
style: UIBarButtonItemStyle.Plain, target: self, action: "createAction:")
self.navigationItem.rightBarButtonItem = createButton
我得到以下编译错误:
Cannot subscript a value of type '[String : String]?' with an index of type 'String'
我现在将使用一种替代解决方案,但我不明白错误,并且没有找到二维dic的运气举例。什么是2d字典的正确方法?
是,它的工作!但为什么我们不需要第二个维度呢? like locale [lang]![“create”]!因为它是另一个可能缺少密钥的字典。 – user2985898
我的答案中有一个错字。它应该是'如果让createButtonTitle = locale [lang]?[“create”]'。它的工作原理(我认为)是因为如果进程中的任何步骤导致nil,处理将停止,{}中的代码不会执行。 –