我正在尝试创建一个新文件夹,但我无法弄清楚如何正确使用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)
但这给了我错误
调用
中的额外参数'withIntermediateDirectories'
我也尝试过很多变种,删除参数等等,但是我无法让它在没有错误的情况下运行。有什么想法吗?
答案 0 :(得分:10)
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)")
}
答案 1 :(得分:5)
您忘记添加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)
希望这有帮助
答案 2 :(得分:3)
createDirectoryAtPath
期望第一个参数String
,而不是网址。尝试直接传递您的路径或使用适合网址的变体createDirectoryForURL
。
以下是一个例子:
NSFileManager.defaultManager().createDirectoryAtPath("/tmp/fnord", withIntermediateDirectories: false, attributes: nil, error: nil)
答案 3 :(得分:1)
基于上面的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)
}