swift - 将 String 类型转换为 Error 是不可预测的

标签 swift compiler-errors

这个我很奇怪。在我正在处理的项目中,我有以下代码

让 stuff = "stuff"为 Error

这似乎编译没有任何问题,但对我来说看起来有点奇怪。

我创建了一个具有相同 swift 版本 (4.2) 的空项目。在这个测试项目中,同一行给了我

'String' is not convertible to 'Error'; did you mean to use 'as!' to force downcast?

这正是我一开始所期望的。这让我相信代码可以在原始项目中编译,因为某些依赖项正在发挥某种魔力,所以将所有依赖项添加到我的测试项目中,但这没有任何改变 - 它仍然无法编译。

我正在努力思考这里发生的事情,但我被困住了,需要你的帮助来弄清楚。它可能是某种编译器标志吗?或者是否有依赖项对 as 关键字产生某种魔力?我怎样才能弄清楚这里发生了什么?

最佳答案

您应该在新项目中添加以下代码。

extension String: Error {}

它允许将字符串作为错误抛出

func someFunction() throws {
    throw "some message" 
}    
do {
    try someFunction() 
} catch let errorMessage {
    print(errorMessage) 
}

关于swift - 将 String 类型转换为 Error 是不可预测的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56074655/

相关文章:

android - 程序类型已经存在:a.a.a.b

C:数组错误初始化的奇怪行为

ios - 快速加载 tableView

swift - 使用 Swift 在 Spritekit 中暂停 SKAction

java - 如何从主函数打印(另一个函数的)整数?

compiler-errors - swift "Ambiguous use of operator ' = ='"

gcc - 如何忽略外部库头文件中的 gcc 编译器迂腐错误?

ios - UIPickerView.selectedRowInComponent 中的 "component"是什么意思?

ios - 在 `filter` 之后或通过查找 `firstIndex that ` 包含快速从数组中删除项目`

ios - 如何在 MVVM-C RxSwift 中实现 firebase 身份验证