मेरे ऐप में एक तंत्र है जिसके लिए एक निश्चित बिंदु पर दो NSString
एस कुछ करने के लिए समान होगा; किसी कारण से जब मैं दोनों की तुलना करता हूं, तब भी जब वे समान होते हैं, तब भी यह इसे पहचान नहीं पाता है। कोड कुछ इस तरह है:दो एनएसएसआरिंग्स की तुलना करें
NSString * aString = [self someMethodThatGetsAString];
NSString * bString;
BOOL areStringsTheSame = NO;
while (areStringsTheSame != YES) {
bString = [self someMethodThatTakesNSStringsFromAnArrey];
if (bString == aString) {
areStringsTheSame = YES;
{ }
मैं भी एक NSLog()
डाला जाता है और यह सुनिश्चित करें कि एक निश्चित बिंदु पर वे एक ही थे (और जहाँ तक मुझे पता है यह क्या ==
के लिए ... खड़ा है) बना दिया लेकिन अभी भी BOOL
मान बदलने के लिए if
में नहीं मिला था।
क्या इस तुलना को करने का कोई और तरीका है? क्या मैं कुछ भूल रहा हूँ?
if ([bString isEqualToString:aString])
==
तुलना संदर्भ (के पते) तार, और न तार के मूल्य:
सच। और ओओपी के सिद्धांतों में खोदना (एक ही गुण के साथ दो वस्तुओं को एक ही वस्तु नहीं है)। अन्यथा, आपको अपने डेवलपर जीवन के हर दिन इस समस्या का सामना करना पड़ेगा :-) – vstrien
स्पष्ट रूप से '==' स्ट्रिंग्स वैरिएबल का उपयोग करने के तरीके के कारण स्ट्रिंग केस-सेंसिटिव रूप से तुलना करने के लिए भी काम करता है। उदाहरण के लिए, एक स्ट्रिंग ए और स्ट्रिंग बी घोषित करें, और '==' करें और आप पाएंगे कि वे दोनों एक ही पते में संग्रहीत हैं। –