Ответ 1
На первый взгляд я бы сказал, что вам нужно передать переменную err
по ссылке:
let content = String(contentsOfFile: path!, encoding: NSUTF8StringEncoding, error: &err)
Мне нужно прочитать содержимое короткого текстового файла в моей программе Swift. Я сделал это:
var err: NSError?
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("cards", ofType: "ini")
let content = String(contentsOfFile: path!, encoding: NSUTF8StringEncoding, error: nil)
Моя проблема в том, что я не могу использовать отчет об ошибках. Если я изменю эту последнюю строку на это:
let content = String(contentsOfFile: path!, encoding: NSUTF8StringEncoding, error: err)
Компилятор жалуется на "Дополнительный аргумент" contentsOfFile "в вызове". Это имеет для меня нулевой смысл, может быть, кто-то еще может понять это?
На первый взгляд я бы сказал, что вам нужно передать переменную err
по ссылке:
let content = String(contentsOfFile: path!, encoding: NSUTF8StringEncoding, error: &err)
После новой обработки ошибок, введенной в iOS 9/Swift 2, решение для этого, которое работает для меня, это:
let fileLocation = NSBundle.mainBundle().pathForResource("filename", ofType: "txt")!
let text : String
do
{
text = try String(contentsOfFile: fileLocation)
}
catch
{
text = ""
}
текст будет содержать содержимое файла или будет пустым в случае ошибки.
Я смог разрешить ошибку, используя ее следующим образом:
let content = String.stringWithContentsOfFile(path!, encoding: NSUTF8StringEncoding, error: nil)
или если вы хотите использовать отчет об ошибках, то
var err: NSError?
let content = String.stringWithContentsOfFile(path!, encoding: NSUTF8StringEncoding, error: &err)