在 Swift 3 中,如何修复有关参数标签与 String 类型的任何可用重载不匹配的错误?

Joe*_*ang 5 swift swift3

在 Swift 2 中,我可以somefile.txt毫无问题地从下面的代码中加载数据:

let fileManager = FileManager.default
let urls = fileManager.urls(for: .applicationSupportDirectory, in: .userDomainMask)
let appDataURL = urls.last.appendingPathComponent("appData")

let fileDestinationUrl = appDataURL!.appendingPathComponent("somefile.txt")

var dataString = ""
do {
    dataString = try String(contentsOfURL: fileDestinationUrl)  //<-- error here
    print("dataString=\(dataString)")
} catch let error as NSError {
    print("Failed reading data in appData Directory, Error: \(error.localizedDescription)")
}
Run Code Online (Sandbox Code Playgroud)

但是,在 Swift 3 中,XCode 在一行中给出了一个错误dataString = try String(contentsOfURL: fileDestinationUrl)

Argument labels '(contentsOfURL:)' do not match any available overloads
Run Code Online (Sandbox Code Playgroud)

如何修复此错误?在 Swift 3 中读取文本文件的正确方法是什么?

syl*_*bix 2

此方法已更新为(在您的示例的上下文中):

dataString = try String(contentsOf: fileDestinationUrl) 
Run Code Online (Sandbox Code Playgroud)

在 Swift 3 中,除非另有明确定义,所有函数参数现在都有标签。在实践中,这通常意味着方法名称的最后一部分移动到第一个参数标签。