【问题标题】:'Error' is ambiguous for type lookup in this context Multipeer Connectivity在这种情况下,“错误”对于类型查找不明确
【发布时间】:2016-09-20 10:35:29
【问题描述】:

更新到 XCode8/Swift 3 后出现此错误

如何解决这个错误?

谢谢!

【问题讨论】:

  • 您的项目中是否有一个 Error 类/结构?在 Swift 3 中,系统类 NSError 被重命名为 Error
  • 请提供文本而不是屏幕截图,以便我们复制代码以重现问题

标签: ios swift swift3 xcode8 multipeer-connectivity


【解决方案1】:

这在具有自己的 Error 类型的类型中最常见。例如:

class MyClass {
    enum Error {
        ...
    }
    ...
}

如果您已全局声明 Error 类型,也会发生这种情况。在 Swift 3 之前,这没有问题,但在 Swift 3 中它与新的 stdlib Error 类型发生冲突。要修复它,您需要更改 Error 类型的名称,或者(更常见的是)明确说明您从哪个模块中提取。所以这行代码会变成:

... withError error: Swift.Error?) {

【讨论】:

  • 这很奇怪,因为没有声明任何错误类型。但是 Swift.Error 起作用了!谢谢
  • 关于 ErrorSwift.Error?Error 是一种类型且含糊不清。好的。什么是Swift.Error
  • "Swift" 是标准库模块的名称。所以 Swift.Error 是 stdlib 中的“错误”符号。它只是一个完全限定的符号。你会在所有 Swift 程序中隐式地获得“import Swift”。所以它并不模糊;这是非常具体的。 :) 如果 OP Cmd 单击原始代码中的“错误”,它们将被带到任何其他定义其自己的错误符号的模块。
猜你喜欢
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
相关资源
最近更新 更多