我创建了一个像这样的二维字典,编译得很好:
contador_tempo
但使用时:
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
我现在将使用替代解决方案,但我不理解错误,并且没有找到二维字典示例的运气。 2d字典的正确方法是什么?
答案 0 :(得分:3)
在字典中查找值会返回一个可选项(因为该键可能不存在。)此次出现:
locale[lang]["create"]
应该是
locale[lang]!["create"]
相反。
请注意,如果字典中没有当前语言的条目,该代码将崩溃。使用可选绑定会更安全:
if let createButtonTitle = locale[lang]?["create"]
{
let createButton = UIBarButtonItem(
title: createButtonTitle,
style: UIBarButtonItemStyle.Plain,
target: self,
action: "createAction:")
self.navigationItem.rightBarButtonItem = createButton
}
答案 1 :(得分:0)
当您致电locale[lang]
时,它会返回一个可选项,因此应将其更改为locale[lang]?["create"]
或locale[lang]!["create"]