你好我正在升级我的现有代码到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模拟器中测试我的应用程序时,复制文件过程正常,但是当我在我的设备iPhone上测试时,出现错误: '错误域= NSCocoaErrorDomain代码= 513“操作无法完成。 (Cocoa error 513.)“UserInfo = 0x17e8af80 {NSUnderlyingError = 0x17e89210”操作无法完成,操作不允许“,NSFilePath =/private/var/mobile/Containers/Bundle/Application/A44E5FF5-F52A-45E7-A803 -DB6A19F1DB82/myApp.app/data.xml' – AJ152
这是因为我在使用Xcode 7 side load的iPhone上运行我的应用程序? @vadian – AJ152