将 obj-c 块转换为 swift 2 闭包

convert obj-c block to swift 2 closure

我有以下代码 -

[self.camera capture:^(LLSimpleCamera *camera, UIImage *image, NSDictionary *metadata, NSError *error) {
    if(!error) {    
       }
}];

对我来说,应该翻译成

self.camera.capture({(camera: LLSimpleCamera, image: UIImage, metadata: [NSObject : AnyObject], error: NSError) -> Void in
    if !error {
    }
})

但它抛出所有关于“无法转换类型的值等”的错误,位于前面和 return 部分中的 Void 之间。有人可以告诉我,这是您必须使用 unSafeMutablePointers 的地方吗?如果是这样,我怎么知道。

谢谢!

问题是这些可以为空,所以你需要感叹号。所以:

self.camera.capture { 
    (camera:LLSimpleCamera!, image:UIImage!, metadata:[NSObject : AnyObject]!, error:NSError!) -> Void in
    // whatever
}

或者更简洁,只是省略类型并让 Swift 从 Objective-C 声明中推断它们:

self.camera.capture { 
    camera, image, metadata, error in
    // whatever
}

还有,Swift里不能说!error,但到了那座桥就可以过