在Swift中使用NSFileManager和createDirectoryAtPath

Naf*_*der 5 nsfilemanager ios swift

我正在尝试创建一个新文件夹,但我无法弄清楚如何正确使用createDirectoryAtPath.

根据文档,这是正确的语法:

NSFileManager.createDirectoryAtPath(_:withIntermediateDirectories:attributes:error:)
Run Code Online (Sandbox Code Playgroud)

我试过这个:

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)
Run Code Online (Sandbox Code Playgroud)

但这给了我错误

调用中的额外参数'withIntermediateDirectories'

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

seb*_*seb 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)")
}
Run Code Online (Sandbox Code Playgroud)


CrA*_*HeR 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)
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

  • 如果你要创建一个URL,那么使用`createDirectoryForURL`是最有意义的.此外,如果您将URL的路径传递给函数,则期望您应该使用`fileSystemRepresentation`,而不是`absoluteString`. (2认同)