我们计划存储以下用户文件
我们还为用户提供了将上述文件上传和下载到第三方云存储的选项。
我想知道,我们应该使用
FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
Run Code Online (Sandbox Code Playgroud)
或者
FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)
Run Code Online (Sandbox Code Playgroud)
用于上述文件存储目的?
过去我们使用“Documents”文件夹,但现在“Application Support”目录是存放此类文件的最佳位置。
该文件系统编程指南说
将用户数据放入
Documents/. 用户数据通常包括您可能希望向用户公开的任何文件——您可能希望用户创建、导入、删除或编辑的任何文件。对于绘图应用程序,用户数据包括用户可能创建的任何图形文件。对于文本编辑器,它包括文本文件。视频和音频应用程序甚至可能包含用户下载以供日后观看或收听的文件。将应用程序创建的支持文件放在
Library/Application support/目录中。通常,此目录包含应用程序用来运行但应对用户隐藏的文件。该目录还可以包含数据文件、配置文件、模板和从应用程序包加载的资源的修改版本。请记住,默认情况下会备份
Documents/和Application Support/中的文件。您可以通过-[NSURL setResourceValue:forKey:error:]使用NSURLIsExcludedFromBackupKey密钥调用来从备份中排除文件。任何可以重新创建或下载的文件都必须从备份中排除。这对于大型媒体文件尤其重要。如果您的应用程序下载视频或音频文件,请确保它们不包含在备份中。将临时数据放在
tmp/目录中。临时数据包括您不需要长时间保留的任何数据。请记住在处理完这些文件后将其删除,以免它们继续占用用户设备上的空间。当您的应用程序未运行时,系统会定期清除这些文件;因此,您不能依赖这些文件在您的应用程序终止后仍然存在。将数据缓存文件放在
Library/Caches/目录中。缓存数据可用于任何需要比临时数据持久化的数据,但不能像支持文件一样长。一般来说,应用程序不需要缓存数据才能正常运行,但可以使用缓存数据来提高性能。缓存数据的示例包括(但不限于)数据库缓存文件和瞬态的可下载内容。请注意,系统可能会删除Caches/目录以释放磁盘空间,因此您的应用必须能够根据需要重新创建或下载这些文件。
另请参阅iOS 存储最佳实践视频。
如果使用了.applicationSupportDirectory,我建议你使用url(for:in:appropriateFor:create:)与create设置为true:
let folderURL = try! FileManager.default
.url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
Run Code Online (Sandbox Code Playgroud)
你选择哪一个并没有多大区别。主要区别在于您是否想使用文件浏览器或文件应用程序;他们可以查看您的文档目录,但不能查看您的应用程序支持目录。
此外,如果您选择一个并发布该应用程序,然后改变主意,则可以轻松迁移和更改应用程序存储其信息的位置。
| 归档时间: |
|
| 查看次数: |
991 次 |
| 最近记录: |