ios - 无法在 Xcode 中构建,错误为 "[method] has been explicitly marked unavailable"

标签 ios xcode swift

我在我的项目中没有做任何更改,但在构建到我的设备时突然出现这些错误:

'componentsWithURL(_:resolvingAgainstBaseURL:)' is unavailable: use object construction 'NSURLComponents(URL:resolvingAgainstBaseURL:)'

'componentsWithURL(_:resolvingAgainstBaseURL:)' has been explicitly marked unavailable here (Foundation.NSURLComponents)

在这一行:

let urlComponents = NSURLComponents.componentsWithURL(url, resolvingAgainstBaseURL: false)

快速帮助说明该方法(和类 NSSURLComponents)自“iOS(8.0 及更高版本)”以来可用。文档说“在 iOS 7.0 及更高版本中可用”。奇怪。

如果我按照错误中的说明改用构造函数,则在访问 urlComponents.schemeurlComponents.URL 时会出现编译器错误。并不是说我抱有很高的期望——我的代码没有被改动过,并且已经编译好几个星期了,没有任何问题。

  • 我清理了产品和构建文件夹
  • 我恢复到一个已知的工作提交
  • 我关闭项目,重新启动 Xcode,重新启动操作系统,重新安装 Xcode
  • 尝试同时运行调试和发布
  • 尝试将部署目标更改为 8.0
  • 尝试在模拟器和设备上运行

在 Xcode 中唯一看起来不同的是,在我的项目名称下方它写着“ios sdk 8.1”。我只记得以前在那里看到过 8.0,但我从未更改过它,也没有更改回来的选项。不知道为什么会有所不同。

Xcode 版本 6.1 (6A1052d)

最佳答案

如错误消息中所示,在您的情况下,构造函数是 NSURLComponents(URL:resolvingAgainstBaseURL:)

let urlComponents = NSURLComponents(URL: url, resolvingAgainstBaseURL: false);

另请注意,这是一个“可失败的初始化程序”(现在)并返回一个可选的。 所以你必须明确地解包结果或使用可选绑定(bind)进行测试:

if let urlComponents = NSURLComponents(URL: url, resolvingAgainstBaseURL: false) {
    // Use urlComponents ..
} else {
    // failed
}

关于ios - 无法在 Xcode 中构建,错误为 "[method] has been explicitly marked unavailable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26763641/

相关文章:

ios - 在文本字段上强制使用英文键盘

ios - 如何使用 Alamofire 像 Postman 一样发送表单数据

ios - 使用 UIWebView 实现信息页面的问题

iOS 9 隐藏状态栏返回按钮

ios - 出现不需要的动画

ios - 为什么不能为字典条目分配新值?

swift - 每次 View Controller 出现时动画 View ?

ios - 快速触摸开始并将其显示在触摸的对象上

ios - 从 '()' 转换为无关类型 'String' 总是失败

ios - Swift - 在 Tic Tac Toe 中编写 Tie 函数