我的文件存储在:
/var/mobile/Containers/Data/Application/083EA15E7/Documents/myFile.zip
从服务器下载后,它就到了那里。
如果我知道文件名是myFile.zip
,我该怎样才能找到NSBundle
?
像这样:
if let URL = NSBundle.mainBundle().URLForResource("myFile", withExtension: "zip") {
// do stuff
}
目前返回false,不知道如何指定整个路径。有什么想法吗?
答案 0 :(得分:2)
经过测试: xCode 8.3.2 & Swift 3.1
首先在项目文件夹中拖动文件(JPG,MP3,ZIP)并确保选中复制项目(如果需要)并在添加到目标
在相关的 ViewController
中let fileName = "fileName"
let fileType = "fileType"
if let filePath = Bundle.main.path(forResource: fileName, ofType: fileType) {
print(filePath)
}
如果您需要获取文件URL,可以使用NSBundle方法
if let fileURL = Bundle.main.url(forResource: fileName, withExtension: fileType) {
print(fileURL)
}
NSBundle方法pathForResource还有一个初始化程序,您可以在其中指定文件所在的目录,如:
if let filePath = Bundle.main.path(forResource: fileName, ofType: fileType, inDirectory: "filesSubDirectory") {
print(filePath)
}
获取文件网址:
if let fileURL = Bundle.main.url(forResource: fileName, withExtension: fileType, subdirectory: "filesSubDirectory") {
print(fileURL)
}
答案 1 :(得分:1)
运行时创建的文件存储在不在NSBundle中的Document目录中。 NSBundle存储文件,如您在开发
时放入Xcode项目的系统文件以下是示例
此代码在Swift 2.0上进行了全面测试
let file = "myFile.zip"
if let dir : NSString = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first {
//path will be stored here
let sPath = dir.stringByAppendingPathComponent(file);
print(sPath) // printing the file path
}