【问题标题】:Xcode 8 beta 'Error' is ambiguous for type lookup in this contextXcode 8 beta 'Error' 在这种情况下对于类型查找来说是模棱两可的
【发布时间】:2017-01-16 14:20:29
【问题描述】:

根据这篇文章,我需要指定模块来查找对象类型:

'Method' is ambiguous for type lookup in this context, Error in Alamofire

但下面的函数是从 Apple API 调用的。我应该等到 Xcode 8 结束测试版吗?还是我错过了什么?

“错误”对于此上下文中的类型查找不明确

AppDelegate.swift中的函数

导入部分

【问题讨论】:

  • 您能否发布此文件的全部内容,包括您的导入语句?多个导入的模块很有可能提供Error 类型,您需要具体说明您想要哪个。此外,iOS 10 中的类型签名可能已更改,但此方法的先前版本使用 NSError,而不是 Error
  • Xcode 8 GM 已经可以下载了
  • func 应用程序(_ 应用程序:UIApplication,didFailToRegisterForRemoteNotificationsWithError 错误:错误)
  • 为什么你的方法是@nonobjc?这只会在 Objective-C 中隐藏它,因此不会被应用程序委托调用。
  • 您要导入的模块之一很可能已经定义了自己的Error 类型——您可以使用Swift.Error 来消除歧义

标签: ios swift xcode8-beta6


【解决方案1】:

解决方案是输入Swift.Error 而不是Error

当您的某个模块有自己的错误类型时会出现此问题...:/

例如:

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Swift.Error) {}

我希望这对你有用:)

【讨论】:

  • 感谢您的回复!更新到 xcode 8 GM 后问题解决了
【解决方案2】:

Error 类型在两个导入的模块中声明。您必须指定要使用该类型的模块。使用Swift.Method 而不是Method

提示:如果您经常使用该类型,您可以在您的模块(应用程序)中创建一个类型别名:

typealias Error = Swift.Error

这样你就不需要在类型前面加上Swift.了。

【讨论】:

    猜你喜欢
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多