2011-01-10 13 views
12

मैंने एनएसएक्सएमएल पार्सर का उपयोग करके अपने प्रोग्राम में एनएसएमयूटेबलस्ट्रिंग मानों के साथ एक एनएसएमयूटेबलएरे को पॉप्युलेट किया है।उद्देश्य-सी: यदि() मानों के साथ स्ट्रिंग की तुलना नहीं की जाती है [NSMutableArray objectatindex:]

मैं ऑब्जेक्टटाइंडेक्स विधि के साथ सरणी से परिणाम प्राप्त कर सकता हूं, लेकिन जब मैं उस मान को किसी (if) संरचना में समझने की कोशिश करता हूं, तो यह काम नहीं करता है, लेकिन एनएसएलओजी दिखाता है कि उसने सही मान वापस कर दिया है। heres मेरी कोड और आउटपुट लॉग खिड़की पर:

int Total = 0; 
int Adet = 0; 
int LPGvolume = 0; 
for(int i = 0;i<[yakitArray count];i++) 
{ 
    NSMutableString *yakitVal = [NSMutableString stringWithFormat:@"%@",[yakitArray objectAtIndex:i]]; 
    NSLog(@"Yakitval: %@",yakitVal); 
    if(yakitVal != @"LPG") 
    { 
     NSMutableString *volumeVal = [volumeArray objectAtIndex:i]; 
     Total = Total + [volumeVal integerValue]; 
    } 
    else 
    { 
     NSLog(@"LPG Found!"); 
     NSMutableString *volumeVal = [volumeArray objectAtIndex:i]; 
     LPGvolume = [volumeVal integerValue]; 
    } 
    NSMutableString *adetVal = [adetArray objectAtIndex:i]; 
    Adet = Adet + [adetVal integerValue]; 
} 

और यहाँ कंसोल आउटपुट:

2011-01-10 16:58:10.885 iStationTouch3[39393:7907] Yakitval: Value1 
2011-01-10 16:58:10.886 iStationTouch3[39393:7907] Yakitval: Value2 
2011-01-10 16:58:10.886 iStationTouch3[39393:7907] Yakitval: LPG 
2011-01-10 16:58:10.887 iStationTouch3[39393:7907] Yakitval: Value3 
2011-01-10 16:58:10.888 iStationTouch3[39393:7907] Yakitval: Value4 
2011-01-10 16:58:10.889 iStationTouch3[39393:7907] Yakitval: Value5 

भी मैं देख सकता हूँ कि 'yakitVal' मूल्य कंसोल विंडो से रसोई गैस है, कार्यक्रम कभी नहीं में हो जाता है 'अन्य' खंड।

शायद मैं उस साधारण समाधान को देखने के लिए बहुत थक गया हूं लेकिन मैं इसके साथ अटक गया हूं। कृपया सहायता कीजिए!!।

उत्तर

38

आप == और != के साथ स्ट्रिंग की तुलना नहीं कर सकते। तकनीकी रूप से, यह सिर्फ पॉइंटर्स की तुलना करेगा और मूल्यों के अनुरूप नहीं होगा, जो आप करना चाहते हैं।

if (! [yakitVal isEqualToString:@"LPG"]) { 
5

,

if (![yakitVal isEqualToString:@"LPG"]) 
{ 
... 
} 

का उपयोग कर स्ट्रिंग मानों की तुलना करने का प्रयास करें == नहीं या! =।

संपादित करें: सशर्त को नकारात्मक।

1

जवाब के लिए तुम लोगों को धन्यवाद, कार्यक्रम के अंत में के रूप में मैं चाहता था चल रहा है:

इसके बजाय आप की तरह कुछ करना चाहते हैं।

मुझे यह भी एहसास हुआ कि मेरे यकीताल के अंत में एक नया लाइन चार था। इसलिए मैंने इसे

yakitVal = [yakitVal stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
पर काम करने के लिए जोड़ा है
संबंधित मुद्दे