我在我的项目中没有做任何更改,但在构建到我的设备时突然出现这些错误:
'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.scheme
和 urlComponents.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/