gpt4 book ai didi

ios - 什么是 UTImportedTypeDeclarations 和 UTExportedTypeDeclarations 在 iOS 上使用?

转载 作者:技术小花猫 更新时间:2023-10-29 10:45:07 24 4
gpt4 key购买 nike

我在这里遇到了拼写错误还是 iOS 上确实存在两种变体:

  • UTImportedTypeDeclarations
  • UTExportedTypeDeclarations

  • 两者都在 Google 上返回一些结果,但后者返回的点击量是其两倍。
    这些 plist 键有什么用?和 CFBundleDocumentTypes有什么区别似乎已经做了我认为其他两个所做的事情,即允许应用程序打开特定的文件类型?

    最佳答案

    UTExportedTypeDeclarations

    您使用 UTExportedTypeDeclarations定义 您自己的 UTI 您的应用程序想要教授安装它的系统。 UTI 描述了一段数据(不一定是位于文件内的数据!)并且至少需要一个标识符( com.example.MyCoolDataType )。此外,它可能有一个名称( My Cool Data Type )、一个或多个文件扩展名( .myCoolDataType )、一种或多种 MIME 类型( x-application/my-cool-data-type )、一种或多种粘贴板类型(在使用复制粘贴传输此类数据时使用),以及一种或多种传统操作系统类型(四个字符代码,OS X 不再使用,这是 MacOS 9 及更早版本的类型系统)。通常,您还希望 UTI 符合现有 UTI,这样,不知道您的 UTI 但知道它符合的 UTI 之一的应用程序仍然能够对其执行有意义的操作。例如。当您说您的 UTI 符合 public.data ,任何可以处理通用数据的过程也可以处理您的 UTI,因为您的 UTI 描述了通用数据。

    系统有一个包含所有已知 UTI 的数据库,当您的应用程序定义新的 UTI 时,它们会自动添加到数据库中,从而为整个系统所知。请注意,您的应用定义了这些 UTI 并不意味着它也可以“处理”包含此类数据的文件!

    典型用法示例:您定义自己的专有文件数据格式,并且希望其他应用程序、插件、扩展程序等也知道此数据格式。

    UTI 导入类型声明

    您使用 UTImportedTypeDeclarations确实教系统有关您希望在系统中知道的 UTI 的知识,但是不是您的尿路感染 .值与 UTExportedTypeDeclarations 相同并且所有类型也被添加到数据库中,因此在整个系统中都是可见的。
    UTExportedTypeDeclarations的区别和 UTImportedTypeDeclarations只是您在 UTExportedTypeDeclarations 中声明了 UTI 的所有权,这意味着如果系统已经知道 UTI 但存储的值与您的值不同,您的值会更新存储的值,因为它是您的 UTI,因此您的描述始终被认为是权威的!如果是 UTImportedTypeDeclarations ,因为您所说的内容不具有权威性,因此甚至不会针对系统已知的类型查看这些内容。这些仅适用于目前未知的类型,一旦任何应用程序在 UTExportedTypeDeclarations 下列出相同的 UTI | ,该应用程序的值会覆盖您的应用程序提供的值。

    典型用法示例:您的应用程序能够读取另一个应用程序的专有数据格式,但您甚至不知道该应用程序是否已安装在系统上。为了使该数据格式为人所知,您将其声明为导入,因为一旦用户安装了相关应用程序,您就希望该应用程序为您正确定义数据格式。

    CFBundleDocumentTypes

    您使用 CFBundleDocumentTypes告诉系统您的应用程序可以打开哪些文档类型。除非您还在此处列出您的 UTI,否则这些 UTI 不会与您在 Finder 中的应用相关联,您的应用也不会出现在 Open With > 中。菜单。如果您将所有文件类型定义为 UTI,那么您需要为每种文档类型提供的只是 UTI 和角色。如果没有被文档类型覆盖,诸如名称、图标、文件扩展名或 MIME 类型之类的内容都将从 UTI 中获取。但是请注意,您可以在不定义 UTI 的情况下定义文档类型,在这种情况下,您必须直接在文档类型上设置所有这些值。您始终必须为文档类型设置的唯一内容是角色。角色可以是“查看者”(您可以显示该文件类型但不能编辑它)、“编辑器”(您可以显示和编辑该文件类型)、“无”(未指定您可以对该文件执行的操作) .

    典型用法示例:您希望您的应用与某些文件类型相关联,通过扩展名、MIME 类型或 UTI 标识符来标识。如果您希望您的应用程序与 UTI 类型相关联,则应用程序应该导入或导出该类型,否则系统可能不知道该类型并且注册到未知 UTI 类型根本没有任何影响。

    关于ios - 什么是 UTImportedTypeDeclarations 和 UTExportedTypeDeclarations 在 iOS 上使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21937978/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com