【发布时间】:2021-10-19 08:40:21
【问题描述】:
我需要在我创建的任务中使用我自己的自定义错误枚举:
enum MyError: Error {
case someError
}
var myTask: Task<MyModel, MyError> = Task { () throws -> MyModel in
// in case of an error:
// throw .someError
// ... perform some work
return MyModel()
}
但我在任务初始化程序的开头收到以下错误:
Referencing initializer 'init(priority:operation:)' on 'Task' requires the types 'MyError' and 'Error' be equivalent.
如何限制Task 仅抛出属于我的自定义错误类型MyError 的错误?
【问题讨论】:
-
为什么首先要声明类型为
Task<MyModel, MyError>? -
试图告诉编译器我需要使用
MyError -
您并没有完全理解我的要求。没有什么能阻止您声明
Task<MyModel, Error>或完全忽略声明的事件。你可以扔任何你想扔的东西。 -
我需要声明
Task<MyModel, MyError>而不是Task<MyModel, Error> -
不,你“不需要”。你想要。有很大的不同。
标签: swift xcode13 swift5.5 swift-concurrency