'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
.
Что мне делать?
Ответы
Ответ 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")