0
我提出這個問題,因爲即使有多個標題類似的標題,我也無法找到具有相同問題的標題。我有一個函數調用有回調函數。這第二個函數調用另一個具有回調的函數。我的問題是,被調用的第三個函數是在一個.m文件中,通過一個橋樑我可以訪問它。如果沒有錯誤,該函數返回nil。問題是,我不能讓零的回調函數,它返回錯誤:在回調函數中展開一個可選值swift
致命錯誤:意外發現零而展開的可選值
我是新來的迅速,從我已閱讀使用可選項是一個好方法,但它仍然存在問題。有任何想法嗎?
代碼:
mainViewController.swift
func makeACall(){
var service:Service!
service = Service()
// error happens on this next line I believe is the error variable
service.lookup(item: itemTextField.text, callback: { (details:String?, error: serviceError?) -> Void in
if (error != nil){
//do something
}
})
}
Service.swift
func lookup(item:String!, callback: (_ details:String?, _ error: serviceError?) -> Void){
super.fetchItem(item, callback: { (details:String?, error: serviceError?) -> Void in
callback(details, error!)
}) // in objective C .m file fetchItem returns the call back as callback(details, nil) if no error
}
謝謝你或你的幫助!我嘗試了你的建議,但不幸的是,錯誤仍然發生,同樣在服務func上,你會推薦添加func lookup(item:String !,回調:函數行中的轉義關鍵字?) – paul590
致命錯誤:意外地發現nil,同時展開一個可選值 - 這個錯誤意味着一個值爲零,你用爆炸(!)解開它,儘量避免它們,我也不明白你爲什麼聲明你的var服務:Service!就像你做的那樣。只是直接初始化它? 是的definetly添加@escaping如果你正在使用swift 3你需要它我只是假設你不是因爲你的代碼沒有它編輯:要清楚 - 你的崩潰不會發生,如果你停止使用劉海(!)。 –
非常感謝你!感謝你的幫助! – paul590