アプリケーション用のユニバーサル エラー ハンドラを作成しようとしていますが、問題をさらに複雑にしています。イベント バスを使用してタスクを渡しているため、コンパイル時に型を指定できません。私は次のことをしようとしています:
let apiTask = data.object as! Task // Option 1
let apiTask = data.object as! Task<AnyObject> // Option 2
apiTask!.continueWith { (task) in
if(task.cancelled || task.faulted) {
self.isInError = true
} else {
self.isInError = false
}
}
オプション 1では、Task のジェネリック型 TResut を推論できないというコンパイル時エラーが発生します。
オプション 2を実行すると、実行時エラーが発生します。Task<SpecificType> cannot be caster to Task<AnyObject>
私はJavaで同じ実装をしていますが、そこでジェネリック型を指定する必要はないようです。Task<TResult>
任意のタイプになる可能性があるため、上記のメソッドで指定することはできません。これを回避する方法はありますか?