文档目录Swift中的文件夹命名

Posted

技术标签:

【中文标题】文档目录Swift中的文件夹命名【英文标题】:Naming of folder in documents directory Swift 【发布时间】:2019-06-27 16:21:42 【问题描述】:

我正在使用以下代码(从另一个答案中提取)在文档目录中创建一个文件夹(我的应用程序需要导出文件)。我正在尝试命名此文件夹,但该文件夹是使用 Xcode 项目的名称而不是我指定的名称创建的:

func createFileDirectory() 
    let documentsPath = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])

//set the name of the new folder
    let folderPath = documentsPath.appendingPathComponent("MY NAME HERE")
    do
    
        try FileManager.default.createDirectory(atPath: folderPath!.path, withIntermediateDirectories: true, attributes: nil)
    
    catch let error as NSError
    
        NSLog("Unable to create directory \(error.debugDescription)")
    

所以当用户能够保存到文件时,它应该允许他们保存到一个名为“MY FOLDER HERE”的文件夹,但它只是创建一个带有 Xcode 项目名称的文件夹(“MY_PROJECT”)

除了最初给我答案的那个here

之外,我找不到任何其他答案

我看不出我做错了什么?它正在创建 a 文件夹,它只是忽略了名称?

更新

以下答案我已更新到 URL API 方法并从目标文件夹名称中删除了空格,但仍然得到错误的文件夹名称(项目名称)

更新代码:

func createFileDirectory() 
    let documentsURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)

    //set the name of the new folder
    let folderURL = documentsURL.appendingPathComponent("FirstDraft")
    do
    
        try FileManager.default.createDirectory(at: folderURL, withIntermediateDirectories: true)
    
    catch let error as NSError
    
        NSLog("Unable to create directory \(error.debugDescription)")
    

【问题讨论】:

使用URL 而不是NSURL 我建议您将问题中的代码编辑为print(folderURL),并向我们展示folderURL 是什么。这段来自 vadian 的代码是正确的。当我在模拟器上运行它时,我看到了/Users/user/Library/Developer/CoreSimulator/Devices/76F6650B-...-A43327F2A267/data/Containers/Data/Application/3F1DCBEE-...-EA7F58957EEC/Documents/FirstDraft,这是正确的。 谢谢,等我能回到电脑前,我会这样做 - 你能去文件看看名字是否也反映在那里显示的文件夹中吗? 现在可以使用了! 【参考方案1】:

请使用 URL 相关的 API。它更可靠

func createFileDirectory() 
    let documentsURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)

    //set the name of the new folder
    let folderURL = documentsURL.appendingPathComponent("MY NAME HERE")
    do
    
        try FileManager.default.createDirectory(at: folderURL, withIntermediateDirectories: true)
    
    catch let error as NSError
    
        NSLog("Unable to create directory \(error.debugDescription)")
    

【讨论】:

嘿,谢谢 - 这在模拟器中不适合我,但我很快会在真实设备上尝试 - 现在是 nc14 不幸的是,这也不适用于真实设备 - 它只是将文件夹名称显示为项目名称 “应用程序支持iTunes文件共享”设置为YES

以上是关于文档目录Swift中的文件夹命名的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 4 中获取文档目录下的所有“*.xxx”文件

在 Swift 中使用 Glimpse 时将文档目录指定为文件输出 URL

如何快速复制文档目录中的远程服务器文件

Swift 从特定文档目录位置删除所有文件

swift:从文档目录加载多个文件

Swift - 从文档目录中删除自定义文件夹