gpt4 book ai didi

swift - 使用 Swift 2 到 4 迁移进行异常处理

转载 作者:行者123 更新时间:2023-11-30 11:41:14 25 4
gpt4 key购买 nike

我正在将一些最初用 Swift2 编写的代码迁移到 Swift4。我已经完成了 Swift3 中间升级,并且在 Xcode9 中遇到了一些错误,涉及一些用户定义的枚举在其源文件之外的使用。

考虑以下部分项目结构...

Project
--EnumDefs
----ExceptionTypes.swift
--UI
----UseExceptions.swift

ExceptionTypes.swift

enum MyError : Error {
case err1
case err2
}
...

UseExceptions.swift

...
do {
...
} catch MyError.err1(let e) {
print("\(e)")
} catch let e {
print("\(e)")
}

...

我也尝试过我在网上看到的变体语法

catch let e as MyError.err1 {

还是不行,我看到编译器错误:

Enum element 'err1' is not a member type of 'MyError'

我尝试将 MyError 范围定义为 public,但没有成功。我有一种感觉,我可能错过了进口或其他东西。我不确定这是否重要,但当我开始输入 MyError 时,UseExceptions.swift 文件中的 Xcode 中的 Autocomplete 确实会识别。

如上所示,在同级目录中的 swift 文件之间使用定义有什么特别之处吗?或者 Swift 4 处理异常处理的方式还有其他问题吗?

最佳答案

您缺少关联值case err1(String)

func test() throws {
throw MyError.err1("error")
}

enum MyError : Error {
case err1(String)
case err2
}

do {
try test()
} catch MyError.err1(let e) {
print(e)
}

关于swift - 使用 Swift 2 到 4 迁移进行异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49264476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com