文档目录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”文件