Obj C Init在Swift中无法识别(DBCamera)

时间:2014-07-13 11:34:03

标签: objective-c swift

当我写下底部的Swift代码时,我得到了“额外的参数在调用中”。语法错误还是有其他问题?感谢。

Objective-C初始化器:

typedef void(^CameraSettingsBlock)(DBCameraView *cameraView, id container);
- (id) initWithDelegate:(id<DBCameraViewControllerDelegate>)delegate cameraSettingsBlock:(CameraSettingsBlock)block;

Swift初始化:

var cameraContainer = DBCameraContainerViewController(delegate: self, cameraSettingsBlock:{
        (cameraView:DBCameraView, container:DBCameraContainerViewController) in
        cameraView.photoLibraryButton.hidden = true
})

2 个答案:

答案 0 :(得分:1)

知道了!我需要一个!使用DBCameraView并需要将DBCameraContainerViewController切换到AnyObject!。谢谢大家!

var cameraContainer = DBCameraContainerViewController(delegate: self, cameraSettingsBlock:{
    (cameraView:DBCameraView!, container:AnyObject!) in
    cameraView.photoLibraryButton.hidden = true
})

答案 1 :(得分:-1)

你可以使用这段代码,利用语法糖来定义一个闭包,当它是函数中的最后一个参数时:

var cameraContainer = DBCameraContainerViewController(delegate: self) { (cameraView, container) in
    cameraView!.photoLibraryButton.hidden = true
}

或更简洁:

var cameraContainer = DBCameraContainerViewController(delegate: self) { $0!.photoLibraryButton.hidden = true }

我在两种情况下都使用类型推断来确定类型。在后一种情况下,$0是传递给闭包的第一个参数的快捷方式。

让我知道它是否有效