将 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
,但到了那座桥就可以过
我有以下代码 -
[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
,但到了那座桥就可以过