繁体   English   中英

在Swift中使用NSFileManager和createDirectoryAtPath

[英]Using NSFileManager and createDirectoryAtPath in Swift

我正在尝试创建一个新文件夹,但我无法弄清楚如何正确使用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'

我也尝试过很多变化,删除参数等等,但我无法在没有错误的情况下运行它。 有任何想法吗?

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

您忘记添加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)

希望这可以帮助

createDirectoryAtPath需要第一个参数的String ,而不是URL。 尝试直接传递路径或使用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)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM