Подтвердить что ты не робот

'stringByAppendingPathComponent' недоступен

Я получаю сообщение об ошибке

'stringByAppendingPathComponent' is unavailable: Use 'stringByAppendingPathComponent' on NSString instead.

когда я пытаюсь сделать

let documentsFolder = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let databasePath = documentsFolder.stringByAppendingPathComponent("test.sqlite")

Это, видимо, работало для людей раньше, но теперь это не работает для меня в Xcode 7 beta 5.

В этой ветке на форумах разработчиков Apple было предложено использовать расширение или сделать прямой прилив NSString. Но если я преобразую его в NSString

let databasePath = documentsFolder.stringByAppendingPathComponent("test.sqlite" as NSString)

то я получаю ошибку

'NSString' is not implicitly convertible to 'String'...

и он дает мне возможность "исправить", вставив as String, который возвращает нас к исходной ошибке.

Это также происходит для stringByAppendingPathExtension.

Что мне делать?

4b9b3361

Ответ 1

Вы можете создать URL, а не путь к строкам.

let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
let fileURL = documentsURL?.appendingPathComponent("test.sqlite")

Если вам абсолютно необходим путь, вы можете получить его так:

guard let path = fileURL?.path else {
    return
}

print(path) // path will exist at this point

В thread было высказано некоторое мнение о том, что Apple может преднамеренно направлять людей к использованию URL-адресов, а не к строковым путям.

См. также:

Ответ 2

Вы можете использовать:

let dbPath = (documentsFolder as NSString).stringByAppendingPathComponent("db.sqlite")