類似のタイトルを持つ複数のものがあるにもかかわらず、私は同じ問題を持つものを見つけることができなかったので、私はこの質問をしました。コールバック関数を呼び出す関数があります。この2番目の関数は、コールバックを持つ別の関数を別の呼び出しにします。私の問題は、呼び出されている3番目の関数は.mファイルの中にあり、これはブリッジを通して私がアクセスできることです。この関数は、エラーがなければnilを返します。問題は、私は、コールバック関数にnilを許すことができませんし、それがエラーを返すということです。コールバック関数のオプション値のアンワップ
致命的なエラー:予期せずに任意の値
をアンラップしながら、私は迅速に新しいですnilを発見し、私が読んだものからオプションを使用することは良い方法ですが、それでも問題はあります。何か案は?
コード:
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ルックアップを追加することをお勧めします(item:String !,コールバック:関数ラインでキーワードをエスケープしますか?) – paul590
致命的なエラー:値 - このエラーは、値をnilとし、これを使用してラップを解除したことを意味します(回避しないようにしてください)なぜあなたはvarサービスを宣言したのでしょうか?ただちに初期化するのですか? スウィフト3を使用している場合は、間違いなく@escapingを追加してください。あなたのコードにはそれがないためではないと思われました。勇気を使って(!) –
ありがとうございました!私はあなたの助けに感謝します! – paul590