【问题标题】:unresolved identifier errors in Xcode 8 and Swift 3Xcode 8 和 Swift 3 中未解决的标识符错误
【发布时间】: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


【解决方案1】:

如果您有很多错误,可能在我尝试您的代码时您错过了 1 } 个大括号,并且 Date、URL 和 DateFormatter 没有问题。

尝试运行您的项目、重新打开、清理甚至重新启动您的 Mac。

【讨论】:

    猜你喜欢
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2017-02-10
    相关资源
    最近更新 更多