簡體   English   中英

Closure默認初始化程序缺失 - swift閉包變量聲明?

[英]Closure default initializer missing - swift closure variable declaration?

我在viewController類之外聲明了閉包,我在viewController類中創建了該閉包的一個變量,但它顯示了此閉包缺少的默認初始值設定項的錯誤。

我理解變量和常量聲明的結果和默認初始化必須在聲明時分配。 但我無法理解我的閉包的默認初始化是什么,我嘗試了一些技巧來解決它,但沒有解決。

這是我的封閉聲明

typealias completionBlock = (String) -> ()  

這是我關閉的變量聲明,它提示初始化它。

class ViewController: UIViewController {

     var completionHandler: completionBlock = // What could be the default initializer to this closure

     override func viewDidLoad() {
         super.viewDidLoad()
     }
}

每當我獲得傳遞所需的值時,我想實現調用此塊,與objective-c external completionBlock聲明相同。

你有3個選項

  • 默認屬性:

     var completionHandler : completionBlock = { _ in } 
  • 隱式解包可選 - 只有在100%確定在調用completionHandler之前設置了值時才執行此操作:

     var completionHandler: completionBlock! 
  • “常規”可選

     var completionHandler: completionBlock? // later callable via completionHandler?("hi") 

我認為它應該是這樣的?

var completionHandler: completionBlock = { stringValue  in 
        // but your code here
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM