本主题主要是关于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。
那么,解决这个问题的最好方法是什么呢?这些都是我现在脑子里想出来的:
第一个缺点是,我需要列出所有其他应用程序错误的Markdown声明。第二个似乎更有道理,但我想知道我是否忽略了什么?
还是有比这两种更好的选择?
发布于 2016-01-21 15:31:41
一个选项是检查所选文件的文件扩展名。
- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url {
NSString *fileUTI = ...
if ([url.pathExtension isEqualToString:@"md"] || UTTypeConformsTo(fileUTI, @"net.daringfireball.markdown")) {
}
}https://stackoverflow.com/questions/34927527
复制相似问题