我正在尝试为我的应用程序创建一个通用错误处理程序,并使事情变得更加复杂我正在使用事件总线来传递任务,因此我无法指定类型编译时间。我试图做到以下几点:没有指定泛型类型的Swift类型转换
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给出了一个编译时错误说泛型类型任务的TResut无法推断。 选项2导致运行时错误说Task<SpecificType> cannot be caster to Task<AnyObject>
我在Java中相同的实现它似乎你并不需要有指定泛型类型。 Task<TResult>
可能是任何类型,所以我不能在上面的方法中指定它。有什么办法可以解决这个问题吗?
不幸的是我不能这样做,因为'任务'存储在'data.object'中。现在这不是一件真正安全的事情,但我愿意冒这个风险,并尝试将其转换为“任务”。不幸的是,似乎斯威夫特是不允许的 –
因此,选项1(改为非泛型)已经结束。选项2是!如上所示,使您的通用错误处理程序方法具有通用性。 – andyvn22