无法将文件从捆绑包复制到 iOS 中的文档目录

2024-04-15移动开发问题
4

本文介绍了无法将文件从捆绑包复制到 iOS 中的文档目录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在尝试使用以下代码将文件从我的包复制到 iOS 中的文档目录.

让 bundlePath = NSBundle.mainBundle().pathForResource("information", ofType: ".png")print(bundlePath, "
")//打印正确的路径让 destPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first!让 fileManager = NSFileManager.defaultManager()让 fullDestPath = NSURL(fileURLWithPath: destPath).URLByAppendingPathComponent("information.png")让 fullDestPathString = String(fullDestPath)print(fileManager.fileExistsAtPath(bundlePath!))//打印 true做{尝试 fileManager.copyItemAtPath(bundlePath!, toPath: fullDestPathString)}抓住{打印(
")打印(错误)}

<块引用>

Error Domain=NSCocoaErrorDomain Code=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=(复制), 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 "没有这样的文件或目录"}}

根据 fileManager.fileExistsAtPath() 文件确实存在.我做错了什么?

解决方案

问题出在这行:

让 fullDestPathString = String(fullDestPath)

应该是:

让 fullDestPathString = fullDestPath.path

查看错误.问题是目的地.注意 file:///.您的代码未正确将 URL 转换为文件路径.您需要使用 NSURLpath 属性来获取字符串形式的路径.

在您所有的调试和检查中,您从未验证过 fullDestPathString 的值.

I am trying to copy a file from my bundle to the documents directory in iOS with the following code.

let bundlePath = NSBundle.mainBundle().pathForResource("information", ofType: ".png")
print(bundlePath, "
") //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("
")
    print(error)
}

Error Domain=NSCocoaErrorDomain Code=4 "The file "information.png" doesn’t exist." 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"}}

According to the fileManager.fileExistsAtPath() the file does indeed exist. What am I doing wrong?

解决方案

The problem is this line:

let fullDestPathString = String(fullDestPath)

It should be:

let fullDestPathString = fullDestPath.path

Look at the error. The problem is the destination. Notice the file:///. Your code is not properly converting the URL to a file path. You need to use the path property of NSURL to get the path as a string.

In all of your debugging and checking, you never verified the value of fullDestPathString.

这篇关于无法将文件从捆绑包复制到 iOS 中的文档目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

硬件音量按钮更改应用程序音量
Hardware Volume buttons change in app volume(硬件音量按钮更改应用程序音量)...
2024-08-12 移动开发问题
10

恢复游戏 cocos2d
Resume game cocos2d(恢复游戏 cocos2d)...
2024-08-12 移动开发问题
6

Cocos2D + 仅禁用 Retina iPad 图形
Cocos2D + Disabling only Retina iPad Graphics(Cocos2D + 仅禁用 Retina iPad 图形)...
2024-08-12 移动开发问题
10

[ios.cocos2d+box2d]如何禁用自动旋转?
[ios.cocos2d+box2d]how to disable auto-rotation?([ios.cocos2d+box2d]如何禁用自动旋转?)...
2024-08-12 移动开发问题
7

从 Documents 目录存储和读取文件 iOS 5
Storing and reading files from Documents directory iOS 5(从 Documents 目录存储和读取文件 iOS 5)...
2024-08-12 移动开发问题
9

如何在 cocos2d 环境之外实现 cocos2d 游戏的虚拟摇杆?
How can I implement a virtual joystick for a cocos2d game outside the cocos2d environment?(如何在 cocos2d 环境之外实现 cocos2d 游戏的虚拟摇杆?)...
2024-08-12 移动开发问题
13