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

Vik*_*ngh 7 closures ios swift

我想创建一个Swift字典,它将String类型作为其键,将Closures作为其值.以下是我的代码,但它给了我错误:

'@lvalue与'(String,( - - > Void)'不同

class CommandResolver {
     private var commandDict:[String : () -> Void]!

     init() {
         self.setUpCommandDict();
     }

     func setUpCommandDict() {

         self.commandDict["OpenAssessment_1"] = {
                 println("I am inside closure");

          }
      }
  }
Run Code Online (Sandbox Code Playgroud)

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

San*_*eep 8

这是要走的路.我不确定为什么你的实现不起作用.

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");

        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Con*_*nor 4

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

class CommandResolver {
    private var commandDict: [String: () -> Void]

    init() {
        commandDict = [:]
        setUpCommandDict()
    }

    func setUpCommandDict() {
        commandDict["OpenAssessment_1"] = {
            println("I am inside closure")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)