将Swift Closures作为值添加到Swift字典中

我想创build一个Swift字典,其中包含stringtypes作为其键和闭包作为其值。 以下是我有的代码,但它给了我错误:

'@lvalue与'(String,() – > Void)不相同“

class CommandResolver { private var commandDict:[String : () -> Void]! init() { self.setUpCommandDict(); } func setUpCommandDict() { self.commandDict["OpenAssessment_1"] = { println("I am inside closure"); } } } 

我试着在StackOverflow上查看关于字典中的闭包的其他问题,但它并没有给我任何满意的答案。 所以我非常感谢这里的帮助。

如果你在调用你的设置函数之前初始化你的字典,它应该可以工作:

 class CommandResolver { private var commandDict: [String: () -> Void] init() { commandDict = [:] setUpCommandDict() } func setUpCommandDict() { commandDict["OpenAssessment_1"] = { println("I am inside closure") } } } 

这是要走的路。 我不确定为什么你的实现不工作。

 class CommandResolver { typealias MyBlock = () -> Void private var commandDict:[String : MyBlock] = [String:MyBlock]() init() { self.setUpCommandDict(); } func setUpCommandDict() { self.commandDict["OpenAssessment_1"] = { print("I am inside closure"); } } }