首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当另一个应用程序错误地定义了一个UTI时,如何绕过它呢?

当另一个应用程序错误地定义了一个UTI时,如何绕过它呢?
EN

Stack Overflow用户
提问于 2016-01-21 15:19:35
回答 1查看 205关注 0票数 2

本主题主要是关于iOS的,尽管它也可能适用于OS。

我在我的应用程序的UTImportedTypeDeclarations中发布了一个声明,声明.md扩展(以及其他扩展)属于UTI net.daringfireball.markdown。这个UTI是由Markdown的最初作者推荐,因此被认为是规范的。

然后我使用UIDocumentPickerViewController从Dropbox打开一个Markdown文件,间接地使用Dropbox的应用扩展。在创建控制器时,我特别将net.daringfireball.markdown作为接受的UTI之一传递。

令我惊讶的是,从那次行动中返回的UTI是pro.writer.markdown。而我的代码期望net.daringfireball.markdown来确定返回的文件是否确实是一个Markdown文件。在我的应用程序中,pro.writer.markdown是不被识别的,实际上它也不在UIDocumentPickerViewController选择的UTI列表中。

经过进一步调查,我手机上的另一个应用程序宣布pro.writer.markdown在其UTExportedTypeDeclarations列表中。这款应用是iA Writer。

那么,解决这个问题的最好方法是什么呢?这些都是我现在脑子里想出来的:

  • 承认失败,并在另一实际行动中添加“或”条款: //.否则if(UTTypeConformsTo(fileUTI,@"net.daringfireball.markdown")财政UTTypeConformsTo(fileUTI,@"pro.writer.markdown")) {. //句柄Markdown文件
  • 回到“超类”UTI,它是纯文本: //.其他的if(UTTypeConformsTo(fileUTI,@"net.daringfireball.markdown") \x UTTypeConformsTo(fileUTI,kUTTypePlainText)) {. //句柄Markdown文件

第一个缺点是,我需要列出所有其他应用程序错误的Markdown声明。第二个似乎更有道理,但我想知道我是否忽略了什么?

还是有比这两种更好的选择?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-21 15:31:41

一个选项是检查所选文件的文件扩展名。

代码语言:javascript
复制
- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url {
    NSString *fileUTI = ...
    if ([url.pathExtension isEqualToString:@"md"] || UTTypeConformsTo(fileUTI, @"net.daringfireball.markdown")) {
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34927527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档