我试图使用以下代码将我的包中的文件复制到iOS中的文档目录.
let bundlePath = NSBundle.mainBundle().pathForResource("information", ofType: ".png") print(bundlePath, "\n") //prints the correct path let destPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first! let fileManager = NSFileManager.defaultManager() let fullDestPath = NSURL(fileURLWithPath: destPath).URLByAppendingPathComponent("information.png") let fullDestPathString = String(fullDestPath) print(fileManager.fileExistsAtPath(bundlePath!)) // prints true do{ try fileManager.copyItemAtPath(bundlePath!, toPath: fullDestPathString) }catch{ print("\n") print(error) }
错误域= NSCocoaErrorDomain代码= 4"文件"information.png"不存在." UserInfo = {NSSourceFilePathErrorKey =/Users/macbookpro/Library/Developer/CoreSimulator/Devices/E58CA1C6-C6F1-4D72-9572-3925675E78A5/data/Containers/Bundle/Application/EFA83E02-5F24-4BB3-B32A-7E755081A730/AutoLayout tuts.app /information.png,NSUserStringVariant =(Copy),NSDestinationFilePath = file:/// Users/macbookpro/Library/Developer/CoreSimulator/Devices/E58CA1C6-C6F1-4D72-9572-3925675E78A5/data/Containers/Data/Application/86A1BDD5- FAF2-486E-85A9-CF72A547C6CD/Documents/information.png,NSFilePath =/Users/macbookpro/Library/Developer/CoreSimulator/Devices/E58CA1C6-C6F1-4D72-9572-3925675E78A5/data/Containers/Bundle/Application/EFA83E02-5F24 -4BB3-B32A-7E755081A730/AutoLayout tuts.app/information.png,NSUnderlyingError = 0x7fb53251cd80 {Error Domain = NSPOSIXErrorDomain Code = 2"No such file or directory"}}
根据fileManager.fileExistsAtPath()
该文件确实存在.我究竟做错了什么?
问题是这一行:
let fullDestPathString = String(fullDestPath)
它应该是:
let fullDestPathString = fullDestPath.path
看看错误.问题是目的地.请注意file:///
.您的代码未正确将URL转换为文件路径.您需要使用path
属性NSURL
来将路径作为字符串.
在所有调试和检查中,您从未验证过的值fullDestPathString
.