2014-11-24 48 views
0

我在快速關閉語法時遇到了問題。我正在檢查使用Sharkfood的靜音開關,您可以在這裏看到:http://sharkfood.com/content/Developers/content/Sound%20Switch/使用鯊魚食物靜音開關的Swift閉包語法?

我試圖調用的塊如下所示。

typedef void(^SharkfoodMuteSwitchDetectorBlock)(BOOL silent); 

這就是我想如何調用它,但它不工作。我嘗試了很多不同的方式,並且我知道我缺少一些小東西,因爲我是新手。我得到的錯誤是:

'(布爾) - >虛空' 是無法轉換爲 '布爾'

在此代碼的第一行:

muteDetector.silentNotify({ 
    (silent: Bool) -> Void in 
    println("this") 
    println("worked") 
}) 

任何幫助將不勝感激。

+0

您是否成功實現了Swift中的聲音切換庫? – 2015-03-11 17:51:47

回答

1

從未使用過圖書館,但看着你的問題鏈接的文檔,我注意到,silentNotify是一個屬性:

@property (nonatomic,copy) SharkfoodMuteSwitchDetectorBlock silentNotify; 

包含塊,所以錯誤,指出一個BOOL預期是有道理的。

與您的代碼

相反,你可能想調用這個方法:

-(void)setSilentNotify:(SharkfoodMuteSwitchDetectorBlock)silentNotify{ 
    _silentNotify = [silentNotify copy]; 
    self.forceEmit = YES; 
} 

我不知道哪兩個你正在試圖做的事情 - 如果你要調用該塊,那麼你有隻是提供了一個布爾值:

muteDetector.silentNotify(true) 

相反,如果你想註冊一個新的塊(關閉),那麼你必須使用:

muteDetector.setSilentNotify({ 
    (silent: Bool) -> Void in 
    println("this") 
    println("worked") 
}) 
+0

我試圖在他們的例子中複製的代碼行如下: self.detector.silentNotify = ^(BOOL silent){sher.stateLabel setText:silent?@「ON」:@「OFF」]; }; – Jeremiah 2014-11-24 20:44:28

+0

然後我想你應該在我的答案中使用最後一段代碼,使用'setSilentNotify' - 儘管我認爲你也可以直接將閉包分配給'silentNotify'屬性(但該方法還設置了'forceEmit'屬性,我忽略了那是什麼) – Antonio 2014-11-24 20:53:41