本主題主要關於iOS,但它也適用於OS X。如何解決另一個應用程序錯誤定義UTI的問題?
我已經在我的應用程序的UTImportedTypeDeclarations
中聲明.md
擴展名(其中包括)屬於UTI net.daringfireball.markdown
。這個UTI是recommended by Markdown's initial author,因此被認爲是規範的。
然後我用UIDocumentPickerViewController
從Dropbox打開一個Markdown文件,間接使用Dropbox的應用程序擴展。當創建該控制器時,我特別通過net.daringfireball.markdown
作爲可接受的UTI之一。
令我驚訝的是,從該動作返回的UTI是pro.writer.markdown
。鑑於我的代碼期望net.daringfireball.markdown
確定返回的文件是否確實是Markdown文件。對於我的應用程序,pro.writer.markdown
未被識別,實際上它不在UIDocumentPickerViewController
挑選的UTI列表中。
經過進一步調查,我手機中的另一個應用程序在其UTExportedTypeDeclarations
列表中聲明pro.writer.markdown
。該應用程序是iA Writer。
現在,解決此問題的最佳方法是什麼?這些是進入我的腦海現在:
不服輸並添加「或」條款其他UTI:
//... else if(UTTypeConformsTo(fileUTI,@"net.daringfireball.markdown") || UTTypeConformsTo(fileUTI,@"pro.writer.markdown")) { ... // handle Markdown file
回落到「超」 UTI這是平原文本:
//... else if(UTTypeConformsTo(fileUTI,@"net.daringfireball.markdown") || UTTypeConformsTo(fileUTI,kUTTypePlainText)) { ... // handle Markdown file
第一個有我需要列出每往下其他應用程序的Mar的不正確申報下行kdown。第二個似乎更合理,但我想知道我是否忽略了某些東西?
還是有比這兩個更好的選擇?
是的,你說得對。返回*純文本*如果另一個應用程序錯誤地聲明瞭擴展名並且沒有正確設置UTI分層結構,則UTI將不起作用。在任何情況下,文件擴展名都是確定從外部文件系統獲取文件時的類型的標準來源。 – adib