ios - 如何将 UIDocumentPickerViewController 导入限制为 .archive 文件?(NSKeyedArchiver)
问题描述
在将数据保存为存档 (NSKeyedArchiver) 的应用程序中,我允许用户导出.archive文件以进行备份。然后,用户可以重新导入这些文件以检索备份的数据。
有没有办法限制 UIDocumentPickerViewController 只允许导入那些 .archive 文件?我尝试使用kUTTypeArchive作为唯一允许的类型,但它似乎不是同一种“存档”,所以我在寻找解决方案时使用了“public.item”。
对文件运行mdls命令会给出此文件类型:dyn.ah62d4rv4ge80c6xdrby1q3k
PS:如果导出和导入 .archive 文件听起来像是不好的做法,我很想知道为什么!
解决方案
您使用的“.archive”文件扩展名不是标准的,它是您选择的任意文件扩展名。
因此,您的应用应该定义自己的自定义文件扩展名和 UTI 来表示您的存档文件。使用 NSKeyedArchiver 创建文件这一事实与用户无关。
在导出的 UTI 部分下定义您的自定义 UTI 和文件扩展名。然后将其添加到文档类型部分。
然后将您的自定义 UTI 与UIDocumentPickerViewController
您的应用程序中的具有您应用程序的自定义扩展名的文件一起使用。
推荐阅读
- vue.js - 如何防止 Bootstrap-Vue 分页自动重置
- node.js - 从 AWS S3 Select 获取单个记录时获取 OverMaxRecordSize?
- php - 条纹结帐 PHP 集成
- vue.js - 为每个创建带有 id 的动态文本字段
- android - 从 firebase 在 RecyclerView 中显示数据:错误:无法将 java.lang.String 类型的对象转换为
- big-o - 这段代码的时间复杂度是多少,其中一个循环以几何方式增长,而另一个循环以代数方式衰减?
- java - 带有 Java 和 Selenium 的 Cucumber 错误地报告重复的步骤定义
- python - OpenCV 将数据从 C++ 传递到 Python
- swift - SKLabelNode PhysicsBody 问题
- python-3.x - list() 定义类型错误