2011-03-29 6 views
6

मैं एक स्ट्रिंग का परीक्षण कर रहा हूं, और मुझे लगता है कि यदि पहली स्ट्रिंग शून्य है, तो वापसी मान NSOrderedSame (0 के लिए मूल्यवान) के बराबर है।आईफोन - एक अन्य मूल्यवान एनएसएसटींग के साथ एक शून्य एनएसएसटींग की तुलना एनएसओर्डर्डसम

if([oneString compare:otherString] == NSOrderedSame) यदि कोई स्ट्रिंग शून्य है तो हाँ वापस आती है।

तो मैं if(oneString != nil && [oneString compare:otherString] == NSOrderedSame)

का परीक्षण करना चाहिए मुझे लगता है कि मैं भी हालत में otherString का परीक्षण करना चाहिए, और एक विशेष मामला बनाने यदि मैं चाहता हूँ कि [nil compare:nil] रिटर्न NSOrderedSame

क्या ऐसे परीक्षण करने के बिना स्ट्रिंग की तुलना करने का एक और सुविधाजनक तरीका है और वास्तव में परीक्षण करना है कि दोनों स्ट्रिंग समान हैं?

उत्तर

11

आप

[someString isEqualToString:@"someOtherString"]; 

या के लिए मामले की कोशिश कर सकते असंवेदनशील:

[[someString lowerCaseString] isEqualToString:[otherString lowerCaseString]]; 
3

मैं का प्रयोग करेंगे दृष्टिकोण @seretur पता चलता है जब तक कि आप मामले को लेकर चिंतित हैं। उस स्थिति में, मैं caseInsensitiveCompare: का उपयोग करूंगा जो वर्तमान में उपयोग कर रहे compare: विधि के समान है।

तुम भी आसान बनाने में कर सकते हैं कि अगर बयान इसलिए की तरह:

if (oneString && [oneString caseInsensitiveCompare:otherString] == NSOrderedSame) { ... 
1

the documentation के अनुसार, स्ट्रिंग नहीं के बराबर होना चाहिए। यदि ऐसा है, तो इसका परिणाम विचित्र व्यवहार हो सकता है।

1

नाइटल को कुछ भेजने के लिए यह पूर्ण कानूनी है। लेकिन परिभाषा के अनुसार यह हमेशा शून्य वापस आ जाएगा। और खुद को actually is 0

यदि हम now look at NSComparisonResult, NSOrderedSame 0 भी है।

enum { 
    NSOrderedAscending = -1, 
    NSOrderedSame, 
    NSOrderedDescending 
}; 
typedef NSInteger NSComparisonResult;