ios - 如何使用 Swift 代码(NSFileManager)创建目录

标签 ios objective-c swift nsfilemanager nsdocumentdirectory

我在转换 Objective-C 代码以创建 Swift 目录时遇到了一些问题。

objective-C :

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/MyFolder"];

    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error];

最佳答案

Swift 5.0

let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let documentsDirectory = paths[0]
let docURL = URL(string: documentsDirectory)!
let dataPath = docURL.appendingPathComponent("MyFolder")
if !FileManager.default.fileExists(atPath: dataPath.path) {
    do {
        try FileManager.default.createDirectory(atPath: dataPath.path, withIntermediateDirectories: true, attributes: nil)
    } catch {
        print(error.localizedDescription)
    }
}

Swift 4.0

let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
let documentsDirectory: AnyObject = paths[0] as AnyObject
let dataPath = documentsDirectory.appendingPathComponent("MyFolder")!
    
do {
    try FileManager.default.createDirectory(atPath: dataPath.absoluteString, withIntermediateDirectories: false, attributes: nil)
} catch let error as NSError {
    print(error.localizedDescription)
}

Swift 3.0

let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
let documentsDirectory: AnyObject = paths[0]
let dataPath = documentsDirectory.appendingPathComponent("MyFolder")!
        
do {
    try FileManager.default.createDirectory(atPath: dataPath.absoluteString, withIntermediateDirectories: false, attributes: nil)
} catch let error as NSError {
    print(error.localizedDescription)
}

swift 2.1

您可以使用以下方法创建目录:

let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
let documentsDirectory: AnyObject = paths[0]
let dataPath = documentsDirectory.stringByAppendingPathComponent("MyFolder")

do {
    try NSFileManager.defaultManager().createDirectoryAtPath(dataPath, withIntermediateDirectories: false, attributes: nil)
} catch let error as NSError {
    print(error.localizedDescription)
}

关于ios - 如何使用 Swift 代码(NSFileManager)创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26931355/

相关文章:

ios - NSRangeException 索引 9 超出范围 [0 .. 8]'

iphone - 我需要为我的 iOS 应用程序提交 1024*1024 的 iTunesArtwork 吗?

ios - 在 iOS 7 中使用相机时应用程序因内存压力而终止

iphone - 指针指向不同的对象: (Unrecognized selector sent to instance)

ios - 在非主线程上设置一个大的 NSDictionary 属性

ios - 为什么 rightRevealToggle 在 'SWRevealViewController' 中什么都不做?

ios - Xcode 9 - 无法发出预编译 header

ios - 如何在 init 中将参数从 Objective C 传递到 Swift

iphone - 通过iPhone表删除核心数据单项

iphone - 即使在调用 commitAnimation 之后,动画也会影响每个 View