2010-07-28 142 views
2

我正在嘗試爲擴展匹配的一對文件類型添加UTI。我認爲我已經正確設置了 - 至少,文件擴展名 - > UTI映射是可識別的(我將它聲明爲info.plist中的導入類型)。但是,當我嘗試從我的測試文件中獲取UTI時,我會返回一個動態UTI。下面是我使用來測試這兩種情況的示例代碼:將UTI分配給文件類型

NSString *previewTypeUTI = nil; 
NSURL *previewFileURL = [NSURL fileURLWithPath:@"/Users/eblair/Desktop/EWF/thetestfile.myext1"]; 

[previewFileURL getResourceValue:&previewTypeUTI forKey:NSURLTypeIdentifierKey error:nil]; 
NSLog(@"%@", previewTypeUTI); // #1 
NSString *testUTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)[previewFileURL pathExtension], NULL); 
NSLog(@"%@", testUTI);   // #2 
[testUTI release]; 

的NSLog#1打印出「DYN ########」和NSLog的#2打印出「com.mycompany.filetype1 」。我會希望他們打印同樣的東西。是否有一些額外的步驟來使文件 - > UTI映射工作,或者是啓動服務需要趕上的情況?

只使用擴展 - > UTI映射不是一種選擇,因爲我想使用一些利用UTI的API,並且這些API似乎正在使用文件 - > UTI映射。

爲了完整起見,這裏是爲進口類型的plist條目:

<key>UTImportedTypeDeclarations</key> 
<array> 
    <dict> 
     <key>UTTypeConformsTo</key> 
     <array> 
      <string>public.disk-image</string> 
     </array> 
     <key>UTTypeDescription</key> 
     <string>File Type 1</string> 
     <key>UTTypeIdentifier</key> 
     <string>com.mycompany.filetype1</string> 
     <key>UTTypeTagSpecification</key> 
     <dict> 
      <key>public.filename-extension</key> 
      <array> 
       <string>myext1</string> 
      </array> 
     </dict> 
    </dict> 
    <dict> 
     <key>UTTypeConformsTo</key> 
     <array> 
      <string>public.disk-image</string> 
     </array> 
     <key>UTTypeDescription</key> 
     <string>File Type 2</string> 
     <key>UTTypeIdentifier</key> 
     <string>com.mycompany.filetype2</string> 
     <key>UTTypeTagSpecification</key> 
     <dict> 
      <key>public.filename-extension</key> 
      <array> 
       <string>myext2</string> 
      </array> 
     </dict> 
    </dict> 
</array> 

回答

7

那麼,它已經接近一年了,但我今天這個不得不重新地址,我想我偶然發現我做錯了什麼。看起來您需要包含public.data作爲您符合的類型,即使public.disk-image已符合public.data。因此,UTTypeConformsTo陣列應該是這樣的:

<key>UTTypeConformsTo</key> 
    <array> 
     <string>public.data</string> 
     <string>public.disk-image</string> 
    </array> 

進行此更改後,我對上面的對比文件 - > UTI和擴展 - > UTI現在產生相同的結果。

相關問題