我在这里遇到一个拼写错误,或者确实在iOS上存在两种变体:

> UTImportedTypeDeclarations
> UTExportedTypeDeclarations

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

解决方法

UTExportedTypeDeclarations

您可以使用UTExportedTypeDeclarations定义您自己的应用程序想要教授其安装系统的UTI. UTI描述了一段数据(不一定是位于文件中的数据!),并且至少需要一个标识符(com.example.MyCoolDataType).此外,它可能有一个名称(我的酷数据类型),一个或多个文件扩展名(.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.请注意,您的应用程序定义这些UTI的事实并不意味着它也可以“处理”包含此类数据的文件!

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

UTImportedTypeDeclarations

您使用UTImportedTypeDeclarations会向系统讲授您希望在系统中知道但不是您的UTI的UTI.这些值与UTExportedTypeDeclarations相同,并且所有类型也都添加到数据库中,因此在整个系统中都可见.

UTExportedTypeDeclarations和UTImportedTypeDeclarations之间的区别仅在于您声明UTExportedTypeDeclarations中UTI的所有权,这意味着如果系统已经知道UTI但存储的值与您的值不同,则您的值会更新存储的值,因为它是您的UTI,所以你的描述总是被认为是权威的!在UTImportedTypeDeclarations的情况下,甚至没有查看系统已知的类型,因为您说的不具有权威性.这些仅被考虑到目前为止未知的类型,并且一旦任何应用程序在UTExportedTypeDeclarations下列出相同的UTI,该应用程序的值将覆盖您的应用程序给出的值.

典型用法示例:您的应用程序能够读取其他应用程序的专有数据格式,但您不知道该应用程序是否安装在系统上.要使该数据格式已知,请将其声明为导入,因为只要用户安装了相关应用程序,您就希望此应用程序正确地为您定义数据格式.

CFBundleDocumentTypes

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

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

iOS上使用的UTImportedTypeDeclarations和UTExportedTypeDeclarations是什么?的更多相关文章

  1. ios7 – 如何使用默认的IOS映像

    嗨,我是IOS开发的新手.我知道如何在IOS应用程序中使用图像.但是我不知道如何使用默认图像,如开发者站点中提到的共享或书签图标.我想用它们我必须下载这些图像集或那些可用在xcode?

  2. 动态模拟iOS动态类型系统文字大小(UIContentSizeCategory)

    解决方法多么尴尬!

  3. iOS上使用的UTImportedTypeDeclarations和UTExportedTypeDeclarations是什么?

    解决方法UTExportedTypeDeclarations您可以使用UTExportedTypeDeclarations定义您自己的应用程序想要教授其安装系统的UTI.UTI描述了一段数据(不一定是位于文件中的数据!

  4. swift 字符串创建类

    先看个OC的swift

  5. 1.2 Swift基本数据类型

    /**基本数据类型:整数类型和小数类型IntInt8Int16Int32Int64UIntUInt8UInt16UInt32UInt64*/letinteger:Int=10//-19的话系统会自动报错letunInteger:UInt32=19print(integer)print(unInteger)//溢出也有自动提示的//letoverValue:UInt8=UInt8.max+1;//p

  6. 16.6 Swift可选链不会增加可选类型的可选性

    那系统会把我们这个可选值再封装一层成为可选值的可选值吗?=xprintprint/**x==Optionaly==Optional所以说存在可选值的可选值*//**当通过可选链请求的数据为可选类型时可选链的返回值情况。=Person.init//可选链请求可选类型的数据,返回的仍然是一个可选值。不会增加它的可选性,成为可选值的可选值。

  7. Swift 系统分享视频UIActivityViewController

    如果我们需要自定义服务类型,就需要创建个CustomUIActicity,继承UIActivity同时需要复写如下方法activityType是提供的服务类型的标识符,一般返回自定义的类名。activityTitle、activityImage自定的服务的标题和logo。canPerform对分享的内容做下预判断,看是否需要进行分享。prepare点击分享按钮后,对分享进行操作。

  8. android – 在AppWidget Provider中获取首选项

    我似乎无法从appwidgetprovider类中读取首选项.我的代码在Activity中工作,但它不在appwidgetprovider中.这是我用来回读布尔值的代码:但是,我得到“方法getSharedPreferences(String,int)未定义类型小部件”错误(小部件是我的appwidgetprovider类的名称).在此先感谢您的任何建议!解决方法getSharedPreferen

  9. CentOS6.5系统自定义RPM包实践

    RPM是一个开放的软件包管理系统。redhat软件公司鼓励其它厂商来了解RPM并在自己的产品中使用它。RPM的发布基于GPL协议。在软件包升级过程中,RPM会对配置文件进行特别处理,绝对不会丢失以往的定制信息。RPM另一个强大的功能是进行软件包的验证。

  10. sigar在Centos和Windows下使用java系统软硬件配置信息

    背景本来这个网上一大堆实在没什么想写的,但是好像大多数都是互相抄袭的,在centos根本上用不了,因此我整理下自己具体实现的步骤。

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部