2011-03-28 93 views
0

給定一個文件類型(例如DOC或PDF),如何得到類似於Finder的'Kind'的描述?例如,在Finder下,DOC種類是'Word 97格式(.doc)',而PDF種類是'可移植文檔格式(PDF)。iPhone:文檔類型描述或'Kind'描述

根據About Document Interaction,「iOS提供了文件類型關聯的系統範圍註冊表」。但我不相信我正在提取正確的信息(我甚至不確定我是否在使用上述註冊表)。

我正在使用下面的代碼,它正在爲DOC的種類返回'com.microsoft.word.doc'。 RTF是'public.rtf',PDF是'com.adobe.pdf'。更奇怪的是一個鏈接(webloc):'dyn.age81s3pcrv10g'。沒有任何描述是用戶友好的。

傑夫

NSURL* url = [NSURL fileURLWithPath:fullPathName]; 
if(url == nil) 
    return [extension uppercaseString]; // i.e., PDF 

UIDocumentInteractionController* doc = [UIDocumentInteractionController interactionControllerWithURL: url];  
if(doc == nil) 
    return [extension uppercaseString]; // i.e., PDF 

return doc.UTI; 

回答

0

下面的代碼,以獲得描述。例如,PDF文件檢索'便攜式文檔格式(PDF)'。

要使用iPhone上的代碼,請添加MobileCoreServices框架和#import <MobileCoreServices/MobileCoreServices.h>。爲了清楚起見,省略了錯誤檢查和ASSERT。

NSString* extension = [filename pathExtension]; 
NSString* hint = @"public.data"; 

CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)extension, (CFStringRef)hint); 
[(NSString *)uti autorelease]; 

CFStringRef mime = UTTypeCopyPreferredTagWithClass (uti, kUTTagClassMIMEType); 
[(NSString *)mime autorelease]; 

CFStringRef description = UTTypeCopyDescription(uti); 
[(NSString*)description autorelease]; 

NSLog(@"%@: %@", filename, description); 

==========================================

堆棧溢出: Where's the iPhone MIME type database?

蘋果:Adopting Uniform Type Identifiers

+0

值得一提:'提示= @ 「public.data」;'指定文件的UTI需要。文件夾也有UTI信息(請參閱Apple採用統一類型標識符)。 – jww 2011-04-02 22:20:56