如何将 UIDocumentPickerViewController 导入限制为 .archive 文件? (NSKeyedArchiver)
Posted
技术标签:
【中文标题】如何将 UIDocumentPickerViewController 导入限制为 .archive 文件? (NSKeyedArchiver)【英文标题】:How to restrict UIDocumentPickerViewController import to .archive files? (NSKeyedArchiver) 【发布时间】:2018-08-20 18:12:56 【问题描述】:在将数据保存为存档 (NSKeyedArchiver) 的应用中,我允许用户导出 .archive 文件以进行备份。然后,用户可以重新导入这些文件以检索备份数据。
有没有办法限制 UIDocumentPickerViewController 只允许导入那些 .archive 文件?我尝试使用 kUTTypeArchive 作为唯一允许的类型,但它似乎不是同一种“存档”,所以我在寻找解决方案时使用了“public.item”。
对文件运行 mdls 命令会给出以下文件类型:dyn.ah62d4rv4ge80c6xdrby1q3k
PS:如果导出和导入 .archive 文件听起来像是一种不好的做法,我很想知道为什么!
【问题讨论】:
嗯,听起来 .archive 文件的想法只是您编造的。所以你需要在 Info.plist 中导出类型。 谢谢你,马特,我不知道这是任意的!几年前在一本书中了解到,他们使用 .archive,我想我也必须这样做。 【参考方案1】:您使用的“.archive”文件扩展名不是标准的,它是您选择的任意文件扩展名。
因此,您的应用应定义自己的自定义文件扩展名和 UTI 来表示您的存档文件。使用 NSKeyedArchiver 创建文件这一事实与用户无关。
在导出的 UTI 部分下定义您的自定义 UTI 和文件扩展名。然后将其也添加到文档类型部分。
然后将您的自定义 UTI 与 UIDocumentPickerViewController
一起使用,因此只有您的应用中带有您应用的自定义扩展名的文件是可选的。
【讨论】:
谢谢!看起来我实际上还没有正确理解档案是什么。我使用的“.archive”扩展名(取自一本书)实际上是任意的,我可以将其更改为我将为应用程序创建的自定义文件扩展名吗? 是的,.archive
扩展名是任意的。
您绝对应该使用特定于应用程序的文件扩展名。这个文件扩展名绝对是超级通用的,不应该绑定到任何特定的应用程序......以上是关于如何将 UIDocumentPickerViewController 导入限制为 .archive 文件? (NSKeyedArchiver)的主要内容,如果未能解决你的问题,请参考以下文章