提问人:Thainá Mariani 提问时间:2/13/2021 最后编辑:jnpdxThainá Mariani 更新时间:2/13/2021 访问量:613
用户的文档目录使用 FileManager 返回 nil
User's document directory returning nil with FileManager
问:
我正在尝试在本地写入文件,但没有成功。当我尝试获取用户的文档目录时,它返回 nil,我相信这就是我的文件未被存储的原因。
另外,我对“用户文档目录”应该是什么意思有很多疑问。是“iCloud Drive”中的“Documents/”还是“在我的手机上”。我应该在另一个地方而不是“文件”应用程序中查找吗?我正在使用 iPhone 模拟器。
我的代码设计如下。documentFolderURL、fileURL 和 url 在调试时都是 nil。
let documentFolderURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last
let ext: String = type ?? "pdf"
let name = "extrato." + ext
let fileURL = documentFolderURL?.appendingPathComponent(name)
do {
if let url = fileURL {
try file.write(to: url, options: .atomic)
}
} catch {...}
答:
1赞
vadian
2/13/2021
#1
使用 ing API 获取错误(应该没有错误)throw
do {
let documentFolderURL = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let ext: String = type ?? "pdf"
let fileURL = documentFolderURL.appendingPathComponent(name).appendingPathExtension(ext)
try file.write(to: fileURL, options: .atomic)
} catch { print(error) }
评论
1赞
vadian
2/13/2021
然后文件就写成功了。
1赞
Eric33187
2/13/2021
#2
您似乎已成功创建文件,但您没有在正确的位置查找它。
您可以通过以下方式导航到模拟器的“用户默认值”文件夹:
打印模拟器文档目录的文件路径。 应该打印类似 file:///Users/yourname/Library/Developer/CoreSimulator/Devices/8DAF542C-4B37-41D1-BA43-1D7C2A32E585/data/Containers/Data/Application/63545C94-56F5-3B11-B601-543801BE717A/Documents/
print(documentFolderURL)
复制除前导 file:// 之外的整个 URL(换句话说,以 /User/yourname...
打开 macbook 的 Finder 应用程序,然后按 command + shift + g。这将使你能够...(请打鼓)...
粘贴 url 以导航到模拟器的文档目录。
您的文件应该:)
评论
0赞
Thainá Mariani
2/14/2021
你是对的,我的文件:)我只在模拟器里面看。我只是不明白为什么documentFolderURL在调试时为零,但在打印时给我一些值。无论如何,非常感谢!
0赞
Eric33187
2/14/2021
我真的不太熟悉调试(因为我也是新手),所以不幸的是我不知道。但很高兴你找到了这个文件!P.S.,如果你认为我的答案是正确的,你能接受它作为正确的解决方案吗?由于我是堆栈溢出的新手,这将有助于提高我的声誉😊,很高兴我能提供帮助!
评论