- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的应用程序中,我想包含一个 QuickLook 插件,该插件读取其他应用程序也使用的非系统扩展(让我们在此示例中使用 RAR)。我在我的应用程序包的 Info.plist 中将扩展声明为 Exported UTI
,如下所示:
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.archive</string>
<string>com.rarlab.rar-archive</string>
</array>
<key>UTTypeDescription</key>
<string>Custom RAR Archive</string>
<key>UTTypeIdentifier</key>
<string>com.my-company.rarx-archive</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>rarx</string>
</array>
</dict>
</dict>
</array>
而且我还适本地导入了 RAR UTI:
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.archive</string>
</array>
<key>UTTypeDescription</key>
<string>RAR Archive</string>
<key>UTTypeIconFile</key>
<string>RAR</string>
<key>UTTypeIdentifier</key>
<string>com.rarlab.rar-archive</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>rar</string>
<string>rarx</string>
</array>
</dict>
</dict>
</array>
不过,在我运行应用程序后,RARX 文件似乎从未与它相关联。为了检查关联,我使用了 mdls
,如下所示:
mdls -name kMDItemContentTypeTree "/Users/Me/.../A File.rarx"
>>> kMDItemContentTypeTree = (
"com.another-company.rarx-archive",
"public.data",
"public.item",
"public.archive"
)
为什么我的 UTI (com.my-company.rarx-archive
) 没有出现在该列表中?我相信这会导致我的 Quick Look 插件无法启动,因为这些文件与 com.another-company.rarx-archive
UTI 相关联。我系统上的另一个应用程序是被使用的。运行带有调试输出的 qlmanage
证实了这一点。
最佳答案
这里的一个问题是您试图将同一个扩展与两个不同的 UTI 相关联,Launch Services 无法处理。您导入的 com.rarlab.rar-archive
声明是正确的,它将所有类型为 rar
的文件分配给 com.rarlab.rar-archive
正如预期的那样。
您不必要地声明了 Exported 声明,因为它试图重新定义 rar
扩展。与其这样做,您只想使用 Imported 声明并在您的 QuickLook 扩展中使用 com.rarlab-rar-archive
来声明它可以处理的内容。
只要其他应用程序未声明 QuickLook 扩展,您应该可以很好地声明此配对并使其正常工作。但是,由于听起来其他应用程序已经具有针对此特定 UTI 的 QuickLook 扩展,我认为您可能无法选择删除它。我的经验是,有冲突的 QuickLook 扩展是先到先得。
关于objective-c - UTI 和文件扩展名关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6009253/
我想这实际上是一个双重问题。一方面,我想知道是否有一种巧妙的方法来枚举给定系统上所有声明的 UTI。 我知道 lsregister -dump 是一个选项,因为我这边有一些 grep 和解析;但是,我
对于我正在开发的应用程序,我们开发了一种基于 HTML 的文件格式,因此即使没有我们的应用程序的用户也可以使用网络浏览器预览文档。 但是,对于拥有该应用程序的用户,我们希望使用它来打开这些文件。我们决
谁能向我解释 Xcode 5.1 中文档类型、导出的 UTI 和导入的 UTI 之间的区别?我希望能够让我的应用程序根据文件扩展名自动检测文件类型。为了做到这一点,我需要实现这三个中的哪一个? 最佳答
我正在把我的头撞到墙上,但似乎无法让我的自定义 UTI 工作。 我正在努力在我的应用程序中实现 AirDrop,这样我就可以在设备之间共享文件。我能够成功地将文件传输到其他设备,但是安装了我的应用程序
当从 Photos Framework 请求图像时,我设法正确获取了除最后 64 之外的所有图像。对于以下代码中的 dataUTI 和 imageData,最后一个总是返回 nil。在试图弄清楚发生了
我的文件格式没有声明 UTI,因此 Launch Services 为其分配了动态 UTI ( dyn.ah62d4rv4ge81g23wsmw1a5dbte )。我无法控制这些文件的 UTI。 碰巧
我的应用导出到 CVS,但 Numbers 无法打开它,因为它没有 public.comma-separated-values-text UTI。有没有一种简单的方法可以在我编写文件时将 UTI 应用
我的应用程序的用户不断遇到与其他应用程序相关的问题,这些应用程序为与我的应用程序相同的文件扩展名声明了不同的 UTI。我想我可以用一个例子来最好地描述这一点: 我的应用程序支持导入和导出 OPML 文
我正在使用AquaticPrime用于在我的应用程序中生成许可证,正如开发人员指南建议的那样,我正在尝试注册自定义文件扩展名,以便用户只需单击许可证,我的应用程序将打开它,然后可以验证许可证。 为此,
我有一个 NSString 形式的文档路径。我如何获得它的UTI作为 NSString?我目前使用 LSCopyItemAttribute ,但这需要 FSRef ,并且用于创建 FSRef 的所有函
我正在开发一个文档应用程序。我的文档实际上是一个可以容纳其他任意文档的包。加载我的文档后,我可以使用 NSFileWrapper API 获取所有这些文件的句柄。我想知道那些 NSFileWrappe
这个主题主要是关于 iOS 的,尽管它也可能适用于 OS X。 我在我的应用程序的 UTImportedTypeDeclarations 中声明了 .md 扩展名(以及其他)属于 UTI net.da
我正在构建一个使用 AVFoundation 的视频编辑应用程序。当用户导入他们的视频(通过 NSOpenPanel 文件浏览器)时,我只想让他们选择 AVFoundation 支持的可接受的视频格式
我正在尝试为我的 iOS 应用创建/导出一个独有的 UTI 类型(非常类似于 Instagram 独占处理 UTI com.instagram.exclusivegram 的方式)。 基本上,我希望
在我的应用程序中,我想包含一个 QuickLook 插件,该插件读取其他应用程序也使用的非系统扩展(让我们在此示例中使用 RAR)。我在我的应用程序包的 Info.plist 中将扩展声明为 Expo
我正在尝试为一对文件类型添加 UTI,通过扩展名匹配。我想我已经正确设置了它——至少,文件扩展名 -> UTI 映射被识别(我在 info.plist 中将其声明为导入类型)。但是,当我尝试从我的测试
我想在 iBooks 应用程序中读取 .epub 文件,所以我使用 UIDocumentInteractionController 在 iBooks 中打开 .epub 文件。一切正常,但我只想在 U
我正在开发的应用程序的文件有一个自定义文件格式,我希望能够使用 iOS 的“打开方式...”功能,该功能可以让用户例如通过电子邮件互相发送文件,然后直接在应用程序中打开它。 我已经在 Info.pli
我有一个基于文档的应用程序,具有自定义文件格式、UTI 等设置: CFBundleDocumentTypes CFBundleTypeExtensions
我正在开发一个视频共享应用程序,可以加载共享到不同地方(Youtube、Twitvid、Facebook 等)的插件我有一个可以读取自定义文件类型的插件。我们将其称为 .foo 文件,其中包含有关共享
我是一名优秀的程序员,十分优秀!