首页 > 解决方案 > 如何将 UIDocumentPickerViewController 导入限制为 .archive 文件?(NSKeyedArchiver)

问题描述

在将数据保存为存档 (NSKeyedArchiver) 的应用程序中,我允许用户导出.archive文件以进行备份。然后,用户可以重新导入这些文件以检索备份的数据。

有没有办法限制 UIDocumentPickerViewController 只允许导入那些 .archive 文件?我尝试使用kUTTypeArchive作为唯一允许的类型,但它似乎不是同一种“存档”,所以我在寻找解决方案时使用了“public.item”。

对文件运行mdls命令会给出此文件类型:dyn.ah62d4rv4ge80c6xdrby1q3k

PS:如果导出和导入 .archive 文件听起来像是不好的做法,我很想知道为什么!

标签: iosswiftnskeyedarchiveruidocumentpickerviewcontroller

解决方案


您使用的“.archive”文件扩展名不是标准的,它是您选择的任意文件扩展名。

因此,您的应用应该定义自己的自定义文件扩展名和 UTI 来表示您的存档文件。使用 NSKeyedArchiver 创建文件这一事实与用户无关。

在导出的 UTI 部分下定义您的自定义 UTI 和文件扩展名。然后将其添加到文档类型部分。

然后将您的自定义 UTI 与UIDocumentPickerViewController您的应用程序中的具有您应用程序的自定义扩展名的文件一起使用。


推荐阅读