2011-07-22 12 views
8

मैं savePanel चादर से एक URL प्राप्त हुआ है और मैं निम्नलिखित करना चाहते हैं:NSURL फाइल एक्सटेंशन के अलावा आदि

  • चेक अगर यह एक विस्तार
  • है देखने के लिए अगर यह होता है, यह
  • को दूर एक कस्टम विस्तार
  • जोड़ने
  • अगर यह नहीं है, तो एक कस्टम विस्तार

यह करने के लिए किसी भी आसान तरीका जोड़ता है .. मैं निम्नलिखित बू की तरह कुछ करने की कोशिश की टी यह काम नहीं करता

if ([tmp pathExtension] != @"xxx") 
    path = [tmp stringByAppendingFormat:@"xxx"]; 

ठीक है ... एक संभव समाधान के रूप में

NSString *path; 
NSURL *filepath; 
fileurl = [sheet URL]; 
fileurl = [fileurl URLByDeletingPathExtension]; 
fileurl = [fileurl URLByAppendingPathExtension:@"yyy"]; 
path = [fileurl path]; 
+0

आपको लगता है कि हल किया? –

+0

हां विन्स .. आपकी मदद के लिए धन्यवाद। दोनों समाधान अच्छी तरह से काम करते हैं। –

उत्तर

7

यह NSString के तरीकों का उपयोग कर प्राप्त किया जा सकता इस प्रकार है। ध्यान दें कि स्ट्रिंग तुलना के लिए, आपको isEqualToString: का उपयोग करना होगा, == नहीं, जो पॉइंटर्स समानता के लिए परीक्षण करता है।

विस्तार के उपयोग के बारे में: -(NSString *)pathExtension;। विस्तार को हटाने के लिए -(NSString *)stringByDeletingPathExtension; का उपयोग करें।

सभी मामलों में एक एक्सटेंशन जोड़ने के लिए, उदाहरण के लिए उपयोग करके एक नई स्ट्रिंग लिखें: +(NSString *)stringWithFormat:

तो:

NSString *finalString; 
if([[tmp pathExtension] isEqualToString:@"xxx"]) { 
    finalString = [tmp stringByDeletingPathExtension]; 
} 
finalString = [NSString stringWithFormat:@"%@.yyy", finalString]; 
+1

एक दोस्त से एक और समाधान .... एनएसएसटींग * पथ; NSURL * filepath; fileurl = [शीट यूआरएल]; fileurl = [fileurl URLByDeletingPathExtension]; fileurl = [fileurl URLByAppendingPathExtension: @ "yyy"]; पथ = [fileurl पथ]; –

1

@ user756245 द्वारा इस एक ही पृष्ठ पर दिए गए से समस्या का समाधान करने के लिए एक वैकल्पिक दृष्टिकोण लेकिन अलग अलग तरीकों का उपयोग कर NSString:

NSString *finalString; 
if([[tmp pathExtension] isEqualToString:@"xxx"]) { 
    finalString = [tmp stringByDeletingPathExtension]; 
} 

finalString = [finalString stringByAppendingPathExtension:@"yyy"];