Swift如何在临时文件夹中创建复杂的文件夹结构

时间:2016-12-10 14:21:09

标签: ios swift swift3 nsfilemanager

我想在应用程序的临时文件夹中创建文件夹结构。

文件夹的结构应为:

  • iPhone

    • 强度
      • 肯定
      • 否定
    • 省略号
      • 肯定
      • 否定
    • 复合
      • 肯定
      • 否定

我正在使用FileManager来创建目录。

class func createBaseDirectory() {

let filemgr = FileManager.default

let dirPaths = filemgr.urls(for: .documentDirectory, in: .userDomainMask)

let docsURL = dirPaths[0]

let newDir = docsURL.appendingPathComponent("iPhone").path

do {
    try filemgr.createDirectory(atPath: newDir, withIntermediateDirectories: true, attributes: nil)
} catch let error as NSError {
    print("Error: \(error.localizedDescription)")
}
}

但这种方式效率不高。因为我应该复制相当多的代码片段。 Swift语言有一些更方便的方法来创建文件夹结构吗?

1 个答案:

答案 0 :(得分:2)

我在Swift游乐场创建了以下内容(与Martin R建议相同),似乎工作正常:

import Foundation

let fm = FileManager.default
let baseUrl = fm.urls(for: .documentDirectory, in: .userDomainMask).first!

let subPaths = [
    "iPhone/Intensity/Positive",
    "iPhone/Intensity/Negative",
    "iPhone/Elipses/Positive",
    "iPhone/Elipses/Negative",
    "iPhone/Composite/Negative",
    "iPhone/Composite/Negative",
]

subPaths.forEach { subPath in
    let url = baseUrl.appendingPathComponent(subPath)
    do {
        try fm.createDirectory(at: url, withIntermediateDirectories: true, attributes: nil)
        print("path created: \(url)")
    } catch let error {
        print("error: \(error)")
    }
}

您可以使用此代码在NSFileManager上创建扩展,以实现可重用性。