Swift get Документ Directory возвращает пустую строку

Согласно Как найти NSDocumentDirectory в swift? Я написал следующий код:

let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let files = NSFileManager().enumeratorAtPath(documentsPath)
var myString:String = "/"
while let file: AnyObject = files?.nextObject() {
    myString += (file as String + "/")
}
println(myString)

Но на самом деле проблема в том, что при отладке программы documentPath соответствует (String) "" после выполнения команды NSSearchPathForDirectoriesInDomains. Кроме того, я пытаюсь сделать это не в MainViewController, я пытаюсь выполнить эту команду в TableViewController.

enter image description here

Однако он работает на детской площадке; Это не работает для любого проекта, который я создаю

let docdir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String + "Test.txt"

возвращает правильный путь, wtf?

Ответ 1

Я просмотрел документацию для NSSearchPathForDirectoriesInDomains, и он говорит:

Вам следует использовать методы NSFileManager URLsForDirectory: inDomains: и URLForDirectory: inDomain: appropriateForURL: создать: ошибка:. которые возвращаются URL-адреса, которые являются предпочтительным форматом.

И работает отлично:

    let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
    println(urls[0])

Тем не менее, ваш код не работает, потому что элементы в массиве, возвращаемые NSSearchPathForDirectoriesInDomains, не являются строками. Если вы хотите сохранить исходный код, просто измените as String на as NSString