【发布时间】:2016-04-03 11:59:48
【问题描述】:
我的应用中有一个传入的PDF 附件。它以NSURL 的形式出现在AppDelegate 中:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
文件打印到print日志为:
传入文件: file:///private/var/mobile/Containers/Data/Application/65E4F19F-98DD-4A4E-8A49-E1C564D135D8/Documents/Inbox/Burrito.pdf
如何从DocumentDirectory Inbox 文件夹中取出文件,默认情况下该文件夹是为传入文件放置的?我尝试创建一个名为“Recipes”的新文件夹,然后将其移至此文件夹,但不会出现错误:
无法创建目录 Error Domain=NSCocoaErrorDomain Code=516 ““Burrito-2.pdf”无法移动到“文档”,因为有一个项目 同名已经存在。” UserInfo={NSSourceFilePathErrorKey=/private/var/mobile/Containers/Data/Application/D5C9B472-B880-4D68-BA0D-31BA545E2150/Documents/Inbox/Burrito.pdf, NSUserStringVariant=( 移动),NSDestinationFilePath=/var/mobile/Containers/Data/Application/D5C9B472-B880-4D68-BA0D-31BA545E2150/Documents/Recipes, NSFilePath=/private/var/mobile/Containers/Data/Application/D5C9B472-B880-4D68-BA0D-31BA545E2150/Documents/Inbox/Burrito.pdf, NSUnderlyingError=0x13912e0e0 {错误域=NSPOSIXErrorDomain 代码=17 “文件存在”}}
我移动文件的代码是:
// Incoming file
print("Incoming File: \(incomingFileTransfer)")
// File Manager
let filemgr = NSFileManager.defaultManager()
// Document Directory
var dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
// Documents Location
let docsDir = dirPaths[0] //as! String
print("Documents Folder: \(docsDir)")
print("------------------------")
// Create a new folder in the directory named "Recipes"
print("Creating new folder...")
let documentsPath = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0])
let newPath = documentsPath.URLByAppendingPathComponent("Recipes")
do {
try NSFileManager.defaultManager().createDirectoryAtPath(newPath.path!, withIntermediateDirectories: true, attributes: nil)
} catch let error as NSError {
NSLog("Unable to create directory \(error.debugDescription)")
}
print("New Path: \(newPath)")
print("------------------------")
// Moving item in folder
print("Moving PDf file to new folder...")
let startingPath = incomingFileTransfer
let endingPath = newPath
do {
try filemgr.moveItemAtURL(startingPath, toURL: endingPath)
} catch let error as NSError {
NSLog("Unable to create directory \(error.debugDescription)")
}
我是 Swift 新手,并且一直在研究有关文件管理的在线和文档,但无法弄清楚这一点。我看了here,但它是不同的,而且在Objective-C;转换为 Swift 对我来说很难。我正在使用Xcode7 和Swift2,谢谢。
【问题讨论】:
标签: ios swift swift2 nsurl nsfilemanager