我遇到了swift闭包语法的问题。我正在尝试使用Sharkfood检查静音开关,您可以在此处看到:http://sharkfood.com/content/Developers/content/Sound%20Switch/
我试图打电话的座位如下所示。
typedef void(^SharkfoodMuteSwitchDetectorBlock)(BOOL silent);
这就是我试图调用它的方式,但它不起作用。我已经尝试了很多不同的方式,我知道自从我刚接触到swift之后我就失去了一些东西。我得到的错误是:
'(Bool) - >虚空'不可转换为' Bool'
在此代码的第一行:
muteDetector.silentNotify({
(silent: Bool) -> Void in
println("this")
println("worked")
})
非常感谢任何帮助。
答案 0 :(得分:1)
从未使用该库,但查看问题中链接的文档,我注意到silentNotify
是属性:
@property (nonatomic,copy) SharkfoodMuteSwitchDetectorBlock silentNotify;
包含块,因此指出BOOL是预期的错误是有意义的。
使用您的代码,您可能正在尝试调用此方法:
-(void)setSilentNotify:(SharkfoodMuteSwitchDetectorBlock)silentNotify{
_silentNotify = [silentNotify copy];
self.forceEmit = YES;
}
我不知道你试图做的2个中的哪一个 - 如果你想打电话给那个区块,那么你必须提供一个布尔:
muteDetector.silentNotify(true)
如果你想要注册一个新的块(闭包),那么你必须使用:
muteDetector.setSilentNotify({
(silent: Bool) -> Void in
println("this")
println("worked")
})