【发布时间】:2017-04-10 16:34:07
【问题描述】:
我正在尝试将一个项目从 Swift 2 翻译到 3,但我遇到了各种问题。
首先,我使用 XCode 8 内置迁移工具来自动转换代码,但转换后 IDE 显示很多错误,例如当我将变量类型从 NSURL 更改为 URL 时,我得到了错误“unresolved identifier 'URL'”,其他类型如 Date、Bundle、DispatchQueque 也是如此。(我已经导入 Foundation)
其他类型的错误例如“UIImagePickerControllerSourceType has no member 'camera'”,但检查documentation 似乎是正确的。
这里有一段sn-p的代码:
func createFileUrl() -> URL {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd_HH-mm-ss"
let fileName: String = dateFormatter.string(from: Date()) + (".m4a")
let filePath: String = getCacheDirectory() + ("/\(fileName)")
self.recordedAudioUrl = URL(fileURLWithPath: filePath)
return self.recordedAudioUrl
}
这里的错误是未解析的标识符:URL、日期、日期格式。
另一个大问题是 Xcode 会突出显示上一行代码中的错误,而当我更改代码(例如只是删除该行)时,错误并没有消失。
有人遇到过类似的问题吗?我对 Swift 不熟悉,但我的 Xcode 似乎无法正常工作。
编辑:我找到了一个解决方案,我的代码是由 eclipse 中的建模工具自动生成的,我刚刚在构建设置中添加了 SWIFT_VERSION = 3.0,现在一切正常
【问题讨论】:
-
你确定你已经更新到 Swift 3(不是 Swift 2.3)吗?尝试清理项目(⇧⌘K)
-
关闭 Xcode,重新打开。
-
我尝试重新打开很多次,但没有任何改变。我已经更新到swift 3,清理项目说:清理失败
-
如果你被卡住并且知道这已经是正确的,请不要坚持这行代码...修复另一个错误,因为它有时会阻止 xcode 验证其他代码行。所以你最好修复另一个错误并重新运行。
标签: ios swift swift3 xcode8 code-translation