在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) }