在Swift中使用NSFileManager和createDirectoryAtPath
我试图创build一个新的文件夹,但我不知道如何正确使用createDirectoryAtPath。
根据文档,这是正确的语法:
NSFileManager.createDirectoryAtPath(_:withIntermediateDirectories:attributes:error:)
我试过这个:
let destinationFolder: String = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String let deliverablePath: NSURL = NSURL.fileURLWithPath("\(destinationFolder)/\(arrayOfProjectIDs[index])")! NSFileManager.createDirectoryAtPath(deliverablePath, withIntermediateDirectories: false, attributes: nil, error: nil)
但是这给了我错误
额外的参数与“中间目录”的调用
我也尝试了很多的变化,删除参数等,但我不能让它运行没有错误。 有任何想法吗?
你忘了添加defaultManager()
并将NSURL转换为String。
你可以尝试更换
NSFileManager.createDirectoryAtPath(deliverablePath, withIntermediateDirectories: false, attributes: nil, error: nil)
与此(将您的NSURL转换为string)
var deliverablePathString = deliverablePath.absoluteString NSFileManager.defaultManager().createDirectoryAtPath(deliverablePathString, withIntermediateDirectories: false, attributes: nil, error: nil)
希望这可以帮助
Swift 2.0的方式:
do { var deliverablePathString = "/tmp/asdf" try NSFileManager.defaultManager().createDirectoryAtPath(deliverablePathString, withIntermediateDirectories: false, attributes: nil) } catch let error as NSError { NSLog("\(error.localizedDescription)") }
createDirectoryAtPath
期望第一个参数为String
,而不是URL。 尝试直接传递path或使用友好的URL变体createDirectoryForURL
。
这里是一个例子:
NSFileManager.defaultManager().createDirectoryAtPath("/tmp/fnord", withIntermediateDirectories: false, attributes: nil, error: nil)
基于上面的seb代码。 当我在函数中使用这个时,我不得不添加一个通用的catch。 这删除了“从这里抛出的错误没有处理,因为封闭的捕获不是穷举”的错误。
do { var deliverablePathString = "/tmp/asdf" try NSFileManager.defaultManager().createDirectoryAtPath(deliverablePathString, withIntermediateDirectories: false, attributes: nil) } catch let error as NSError { NSLog("\(error.localizedDescription)") } catch { print("general error - \(error)", appendNewline: true) }