Здравствуйте, я обновляю свой существующий код до Swift 2, и мне нужна помощь с копией файла внутри DocumentDirectoy.NSFileManager fileExistsAtPath не может перезаписать существующий файл в Swift 2
Это преобразованный код, который я использую, чтобы проверить, существует ли файл, и если это так, мы должны скопировать его в любом случае, но он продолжает возвращать ошибку, указывающую, что файл существует, что это правда, но нам нужно чтобы перезаписать его.
func copyXMLFile()
{
// Get a reference for the Document directory
let rootPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, .UserDomainMask, true)[0]
// Get a reference for the data.xml file
xmlPathInDocument = rootPath.stringByAppendingString("data.xml")
if NSFileManager.defaultManager().fileExistsAtPath(xmlPathInDocument){
print("xml file exists")
let xmlPathInBundle = NSBundle.mainBundle().pathForResource("data", ofType: "xml")!
do {
// copy file from main bundle to documents directory
print("copy")
try NSFileManager.defaultManager().copyItemAtPath(xmlPathInBundle, toPath: xmlPathInDocument)
} catch let error as NSError {
// Catch fires here, with an NSErrro being thrown
print("error occurred, here are the details:\n \(error)")
}
}
else
{
// copy the file either way
let xmlPathInBundle = NSBundle.mainBundle().pathForResource("data", ofType: "xml")!
do {
// copy file from main bundle to documents directory
print("copy")
try NSFileManager.defaultManager().copyItemAtPath(xmlPathInBundle, toPath: xmlPathInDocument)
} catch let error as NSError {
// Catch fires here, with an NSErrro being thrown
print("error occurred, here are the details:\n \(error)")
}
}
}
произошла ошибка, вот детали:
Error Domain=NSCocoaErrorDomain Code=516 "The operation couldn’t be completed. (Cocoa error 516.)" UserInfo=0x7a67b680 {NSSourceFilePathErrorKey=/Users/User1/Library/Developer/CoreSimulator/Devices/0E591E5B-2E2F-4CCB-9099-95CE1EA3F557/data/Containers/Bundle/Application/E3C8FAE4-703D-46CA-AC37-A1C96A74E6BE/myApp.app/data.xml, NSUserStringVariant=( Copy), NSFilePath=/Users/User1/Library/Developer/CoreSimulator/Devices/0E591E5B-2E2F-4CCB-9099-95CE1EA3F557/data/Containers/Bundle/Application/E3C8FAE4-703D-46CA-AC37-A1C96A74E6BE/myApp.app/data.xml, NSDestinationFilePath=/Users/User1/Library/Developer/CoreSimulator/Devices/0E591E5B-2E2F-4CCB-9099-95CE1EA3F557/data/Containers/Data/Application/09F690B3-BDD8-4482-ADDE-E33F30D4B873/Documentsdata.xml, NSUnderlyingError=0x7a67dd80 "The operation couldn’t be completed. File exists"}
Пожалуйста, помогите!
Спасибо @vadian, второй вариант помог! – AJ152
При тестировании моего приложения в IOS Simulator процесс копирования файлов работает нормально, но когда я тестирую на своем устройстве iPhone, я получаю сообщение об ошибке: 'Error Domain = NSCocoaErrorDomain Code = 513" Операция не может быть выполнена. (Cocoa error 513.) «UserInfo = 0x17e8af80 {NSUnderlyingError = 0x17e89210« Операция не может быть выполнена. Операция не разрешена », NSFilePath =/private/var/mobile/Контейнеры/Пакет/Приложение/A44E5FF5-F52A-45E7-A803 -DB6A19F1DB82/myApp.app/data.xml' – AJ152
Это потому, что я запускаю свое приложение на iPhone с помощью боковой нагрузки Xcode 7? @vadian – AJ152