【问题标题】:(Swift) How to make subfolders in one folder(Swift) 如何在一个文件夹中创建子文件夹
【发布时间】:2026-01-25 11:15:01
【问题描述】:

我在*上找到了一些代码,但我似乎没有很好地理解它:

 extension FileManager.SearchPathDirectory {
func createSubFolder(named: String, withIntermediateDirectories: Bool = true) -> Bool {
    var url = FileManager.default.urls(for: self, in: .userDomainMask).first
    url?.appendPathComponent("f/folder1/appName/data")
    print(url)
    do {
        try FileManager.default.createDirectory(at: url!.appendingPathComponent(named), withIntermediateDirectories: withIntermediateDirectories, attributes: nil)
        print(url)
        return true
    } catch {
        print(error)
        return false
    }
}

}

使用扩展:

 for index in 1...5 {
                        if FileManager.SearchPathDirectory.desktopDirectory.createSubFolder(named: String(index)) {
                            print("folder successfully created")
                        }
                    }

在我的应用程序中,我有一个文件夹“数据”。我想在“数据”中创建 5 个新文件夹,分别称为“1”、“2”、“3”、“4”、“5”。

打印五次:

文件夹创建成功 问题是我的应用程序中的data folder 中没有新文件夹。

【问题讨论】:

  • 在 iOS 中寻址桌面文件夹是没有意义的。将您的资料保存在文档文件夹中
  • 在您评论@vadian 几秒钟后,我编辑了我的帖子。请检查一下

标签: ios swift file directory nsfilemanager


【解决方案1】:

您的代码应该如下所示,

extension FileManager.SearchPathDirectory {
    func createSubFolder(named: String, withIntermediateDirectories: Bool = true) -> Bool {
        guard let url = FileManager.default.urls(for: self, in: .userDomainMask).first else { return false }
        do {
            try FileManager.default.createDirectory(at: url.appendingPathComponent(named), withIntermediateDirectories: withIntermediateDirectories, attributes: nil)
            return true
        } catch {
            print(error)
            return false
        }
    }
}

我刚刚将 withIntermediateDirectories 的默认值设置为true

createIntermediates:如果为 true,则此方法会创建任何不存在的父目录,作为在 url 中创建目录的一部分。如果为 false,则如果任何中间父目录不存在,此方法将失败。

【讨论】:

  • 是的,它打印folder successfully created 5x,但我在任何地方都看不到文件夹...
  • 打印您的网址。如果您在模拟器中,那么您的日志中将类似于file:///Users/admin/Library/Developer/CoreSimulator/Devices/D56B392C-5B71-423E-829C-E17AD760D3E2/data/Containers/Data/Application/6EB7886A-4506-4CE8-B637-1E2C67DD32EC/Desktop/。从users to last path component (desktop) 中选择并右键单击它并 -> 服务 -> 在 finder 中显示
  • 在这里,您正在桌面目录中创建文件夹!因此,如果您在文档目录中查找,那么您将找不到它!
  • 我打印了url,就像你在评论中写的一样。但是 Desktop 中没有创建文件夹..?