2011-09-01 9 views
65

नमस्ते मैं घायल हो रहा हूं अगर आप यह देखने के लिए जांच कर सकते हैं कि कोई एनएसएसटींग एक विशिष्ट मान के बराबर कहता है उदाहरण के लिए किसी व्यक्ति का नाम?कैसे जांचें कि NSString = एक विशिष्ट स्ट्रिंग मान है या नहीं?

मैं

if (mystring == @"Johns"){ 
    //do some stuff in here 
} 

उत्तर

135
if ([mystring isEqualToString:@"Johns"]){ 
    //do some stuff in here 
} 
3

यहाँ की तर्ज पर सोच रहा हूँ एक और तरीका है आप कुछ परिस्थितियों में उपयोग करने के लिए चाहते हो सकता है: या

NSArray * validNames = @[ @"foo" , @"bar" , @"bob" ]; 

if ([validNames indexOfObject:myString].location != NSNotFound) 
{ 
    // The myString is one of the names in the valid names array 
} 

आप नाम की एक बड़ी राशि है, तो सरणी में आप NSSet का उपयोग कर सकते हैं, क्योंकि ऑब्जेक्ट ढूंढना किसी सरणी से तेज है ((O(Log N) बनाम O(N))

NSSet * validNamesSet = [NSSet setWithArray:validNames]; 

if ([validNamesSet containsObject:myString]) 
{ 
    // This is faster than indexOfObject for large sets 
} 

इन तरीकों काम करते हैं क्योंकि NSSet और NSArray उपयोग isEqual: जो NSString उदाहरण के लिए isEqualToString: कॉल करेंगे।

+0

'isEqualToString' विधि' के साथ लूप के विपरीत आप 'स्थान' दृष्टिकोण का उपयोग कब करना चाहते हैं? – Pavan

+1

@Pavan लूप (कोड की कम पंक्तियों) की तुलना में 'indexOfObject' का उपयोग करना थोड़ा आसान है। इसके अलावा थोड़ा अंतर है। एनएसएससेट विधि बड़े सेट के लिए सरणी हालांकि लूपिंग से तेज हो सकती है, लेकिन ज्यादातर मामलों के लिए यह महत्वपूर्ण नहीं होगा। – Robert