在 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)
但这给了我错误
Extra argument 'withIntermediateDirectories' in call
我也尝试了很多变体,删除参数等,但我无法将其正确无误地传送到 运行。有什么想法吗?
createDirectoryAtPath
期望第一个参数是 String
,而不是 URL。尝试直接传递您的路径或使用 URL 友好变体 createDirectoryForURL
.
这是一个例子:
NSFileManager.defaultManager().createDirectoryAtPath("/tmp/fnord", withIntermediateDirectories: false, attributes: nil, error: nil)
您忘记添加 defaultManager()
并将 NSURL 转换为字符串。
您可以尝试更换
NSFileManager.createDirectoryAtPath(deliverablePath, withIntermediateDirectories: false, attributes: nil, error: nil)
用这个(将你的 NSURL 转换成字符串)
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)")
}
基于上述 seb 的代码。
当我在我的函数中使用它时,我也必须添加一个通用的 catch。
这消除了 "Errors thrown from here are not handled because the enclosing catch is not exhaustive" 错误。
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)
}
我正在尝试创建一个新文件夹,但我不知道如何正确使用 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)
但这给了我错误
Extra argument 'withIntermediateDirectories' in call
我也尝试了很多变体,删除参数等,但我无法将其正确无误地传送到 运行。有什么想法吗?
createDirectoryAtPath
期望第一个参数是 String
,而不是 URL。尝试直接传递您的路径或使用 URL 友好变体 createDirectoryForURL
.
这是一个例子:
NSFileManager.defaultManager().createDirectoryAtPath("/tmp/fnord", withIntermediateDirectories: false, attributes: nil, error: nil)
您忘记添加 defaultManager()
并将 NSURL 转换为字符串。
您可以尝试更换
NSFileManager.createDirectoryAtPath(deliverablePath, withIntermediateDirectories: false, attributes: nil, error: nil)
用这个(将你的 NSURL 转换成字符串)
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)")
}
基于上述 seb 的代码。 当我在我的函数中使用它时,我也必须添加一个通用的 catch。 这消除了 "Errors thrown from here are not handled because the enclosing catch is not exhaustive" 错误。
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)
}