2012-02-11 19 views
48

में निहित फ़ाइल का विस्तार प्राप्त करें मेरे पास एक एनएसएमयूटेबल डिक्शनरी है जिसमें fileone.doc या filetwo.pdf के सरल रूप में फ़ाइल आईडी और उनके फ़ाइल नाम + एक्सटेंशन शामिल हैं। मुझे यह निर्धारित करने की ज़रूरत है कि मेरे UITableView में संबंधित आइकन को सही तरीके से प्रदर्शित करने के लिए किस प्रकार की फ़ाइल है। यहां तक ​​कि मैंने अभी तक किया है।एनएसएसटींग

NSString *docInfo = [NSString stringWithFormat:@"%d", indexPath.row]; //Determine what cell we are formatting 
NSString *fileType = [contentFiles objectForKey:docInfo]; //Store the file name in a string 

मैं निर्धारित करने के लिए किस प्रकार की फ़ाइल मैं देख रहा हूँ दो regex लिखा था, लेकिन वे एक सकारात्मक परिणाम वापस कभी नहीं। मैंने पहले आईओएस प्रोग्रामिंग में रेगेक्स का उपयोग नहीं किया है, इसलिए मुझे पूरी तरह से यकीन नहीं है कि मैं इसे सही कर रहा हूं, लेकिन मैंने मूल रूप से कक्षा विवरण पृष्ठ से कोड कॉपी किया है।

NSError *error = NULL; 
NSRegularExpression *regexPDF = [NSRegularExpression regularExpressionWithPattern:@"/^.*\\.pdf$/" options:NSRegularExpressionCaseInsensitive error:&error]; 
NSRegularExpression *regexDOC = [NSRegularExpression regularExpressionWithPattern:@"/^.*\\.(doc|docx)$/" options:NSRegularExpressionCaseInsensitive error:&error]; 
    NSUInteger numMatch = [regexPDF numberOfMatchesInString:fileType options:0 range:NSMakeRange(0, [fileType length])]; 
    NSLog(@"How many matches were found? %@", numMatch); 

मेरे प्रश्न होंगे, क्या ऐसा करने का कोई आसान तरीका है? यदि नहीं, तो मेरा regex गलत है? और आखिर में अगर मुझे इसका इस्तेमाल करना है, तो क्या यह रन टाइम में महंगा है? मुझे नहीं पता कि उपयोगकर्ता के पास कितनी फाइलें होंगी।

धन्यवाद।

उत्तर

143

आप को [fileType pathExtension]

NSString Documentation: pathExtension

+1

ओह, यह नहीं पता था कि एनएसएसटींग में 'पथ एक्सटेंशन' संपत्ति – remy

+4

उद्देश्य-सी बस चीजों को इतना आसान बनाता है; मुझे ऐसे कठिन समाधानों के बारे में सोचना नहीं है! धन्यवाद डेविड। – TheJer

+3

मुझे खुशी है कि मैंने कोशिश नहीं की और इस समारोह को स्वयं बना दिया – Will

6
//NSURL *url = [NSURL URLWithString: fileType]; 
NSLog(@"extension: %@", [fileType pathExtension]); 

संपादित आप डेविड बैरी को

धन्यवाद NSString पर pathExtension उपयोग कर सकते हैं

+0

NSString *fileName = @"yourFileName.pdf"; NSString *ext = [fileName pathExtension]; 

प्रलेखन यहाँ आप स्ट्रिंग पर सीधे pathExtension कॉल कर सकते हैं, एक NSURL पहले बनाने की आवश्यकता। –

+3

आपने अभी ऊपर दिए गए उत्तर को क्यों फटकारा है और फिर उसे श्रेय दिया है? –

3

उपयोग करने का प्रयास [filetype pathExtension] के लिए देख रहे फ़ाइल का विस्तार प्राप्त करें।

4

इस प्रयास करें:

NSString *fileName = @"resume.doc"; 
NSString *ext = [fileName pathExtension]; 
0

स्विफ्ट 3 में आप एक विस्तार इस्तेमाल कर सकते हैं:

extension String { 

public func getExtension() -> String? { 

     let ext = (self as NSString).pathExtension 

     if ext.isEmpty { 
      return nil 
     } 

     return ext 
    } 
}