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

参见英文答案 >
String(contentsOfURL:) in Swift 3                                    1个

在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)")
}

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

Argument labels '(contentsOfURL:)' do not match any available overloads

如何解决这个错误?在Swift 3中读取文本文件的正确方法是什么?

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

dataString = try String(contentsOf: fileDestinationUrl) 

在Swift 3中,除非另外特别定义,否则所有函数参数现在都有标签.实际上,这通常意味着方法名称的最后一部分移动到第一个params标签.

点赞