2009-10-01 6 views
16

मैं कोको में फ़ाइल एक्सटेंशन से यूनिफ़ॉर्म टाइप आइडेंटिफ़ायर में अनुवाद करने का कोई तरीका ढूंढ रहा हूं। जो है, मैं ऐसा करने का कोई रास्ता खोजना चाहते हैं:किसी दिए गए एक्सटेंशन के लिए एक समान प्रकार पहचानकर्ता प्राप्त करना

".jpg" => "public.jpeg" 
".html" => "public.html" 
".ttf"=> "public.truetype-font" 

मैं NSWorkspace डॉक्स पर खोज की है, लेकिन कुछ भी नहीं मिला। निकटतम मैं मिल सकता था:

- (NSImage *)iconForFileType:(NSString *)fileType 

कि एक फाइल एक्सटेंशन देता है, और

– (NSString *)preferredFilenameExtensionForType:(NSString *)typeName 

कि वास्तव में मैं क्या कर रहा हूँ के विपरीत है। क्या आप में से कोई यह जानता है कि यह कैसे करें?

मुझे उम्मीद है कि मुझे हाथ से बहुत से एक्सटेंशन की जांच करने की आवश्यकता नहीं है।

अग्रिम धन्यवाद।

उत्तर

37

मैं इस बारे में एक हफ्ते पहले की जरूरत:

NSString * UTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, 
                    (CFStringRef)[myFilePath pathExtension], 
                    NULL); 

अगर मैं विस्तार पर इस चलाने @ "php", @ "jpg", @ "html", और @ "ttf", यह प्रिंट:

public.php-script 
public.jpeg 
public.html 
public.truetype-ttf-font 
+8

बस इसे न भूलें क्योंकि फ़ंक्शन नाम में 'बनाएं' है, आप ऑब्जेक्ट को रिलीज़ करने के लिए ज़िम्मेदार हैं। – Alex

+0

धन्यवाद! इसने काम कर दिया। मुझे शुरुआत में कुछ समस्याएं थीं, लेकिन ऐसा इसलिए था क्योंकि मैं पथ तारों से व्हाइटस्पेस और न्यूलाइन वर्णों को ट्रिम नहीं कर रहा था। (मैं उन्हें कमांड लाइन टूल से पढ़ रहा हूं।) –

+3

मुझे आज बस इसकी आवश्यकता है। :-) यदि आप इसे इस तरह लपेटते हैं तो यह भी क्लीनर है: 'NSString * uti = [NSMakeCollectable (UTTypeCreatePreferredIdentifierForTag (kUTTagClassFilenameExtension, (CFStringRef) [myFilePath pathExtension], NULL); autorelease];' –

9

आप टर्मिनल का उपयोग करें और mdls जो आप यूटीआई सहित एक निश्चित फ़ाइल प्रकार के बारे में जानकारी के सभी प्रकार देता आह्वान कर सकते हैं।

mdls /myPath/to/myFile.ext 

mdls तो आप kMDItemContentTypeTree में जुड़े यूटीआई दिखाएगा (यह भी btw अपने कोको अनुप्रयोग के भीतर से mdls कॉल करने के लिए संभव है)।

+0

होना चाहिए यह अच्छी जानकारी है –

संबंधित मुद्दे