После обновления моего проекта до Swift 2.1 NSFileManger
copyItemAtPath
выдает следующую ошибку.
Error Domain=NSCocoaErrorDomain Code=260 "The file "Settings.plist" couldn’t be opened because there is no such file."
NSFilePath=/Users/nick/Library/Developer/CoreSimulator/Devices/95856F10-9770-44B5-B990-B461E6991B79/data/Containers/Bundle/Application/17AAAD05-33FE-470A-9617-C8E378371E2E/MyApp.app/Settings.plist,
NSDestinationFilePath=/Users/nick/Library/Developer/CoreSimulator/Devices/95856F10-9770-44B5-B990-B461E6991B79/data/Containers/Data/Application/020503D6-F7CE-47D2-83A7-D4B7D86E6D1D/Documents/Settings.plist,
NSUnderlyingError=0x7994daf0 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
Базовый исходный файл и папка назначения существуют, но копирование всегда завершается ошибкой.
let _documentsDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let storePath = NSURL(fileURLWithPath: _documentsDirectory).URLByAppendingPathComponent("\(storeName).plist").absoluteString
let fileManager = NSFileManager.defaultManager()
if (!fileManager.fileExistsAtPath(storePath)) {
if let bundle = NSBundle.mainBundle().pathForResource(storeName, ofType:"plist") {
do {
try fileManager.copyItemAtPath(bundle, toPath: storePath)
return storePath
} catch let error as NSError {
print(error)
return nil
}
}...
Файл существует, и print("Exists:", fileManager.fileExistsAtPath(bundle))
возвращает значение true.
Изучив Как найти NSDocumentDirectory в swift? и другие, я попробовал существует множество различных методов для получения каталога Documents и основных ресурсов пакета, но я просто не могу скопировать файл.
Все отлично работало в Swift 1.2.
absoluteString
- неправильный метод преобразования URL-адреса в путь к файлуstorePath
. - person Martin R   schedule 17.12.2015.absoluteString
на.path!
помогла. - person PassKit   schedule 17.12.2015