2011-01-10 25 views
12

tôi đã tạo một NSMutableArray với các giá trị NSMutableString trong chương trình của tôi bằng cách sử dụng NSXML Parser.Mục tiêu-C: So sánh chuỗi với các giá trị if() không hoạt động trên [NSMutableArray objectatindex:]

tôi có thể lấy kết quả thành công từ mảng với phương thức objectatindex, nhưng khi tôi cố gắng compoare giá trị đó trong cấu trúc if(), nó không hoạt động, nhưng NSLog cho thấy nó đã trả về giá trị đúng. heres mã của tôi và đầu ra trên Log Window:

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]; 
} 

Và Heres Output Console:

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 

thậm chí tôi có thể thấy rằng giá trị 'yakitVal' là LPG từ cửa sổ giao diện điều khiển, chương trình không bao giờ được vào Phần 'Khác'.

Có lẽ tôi quá mệt mỏi khi thấy giải pháp đơn giản đó nhưng tôi bị mắc kẹt với điều này. Hãy giúp tôi!!.

Trả lời

38

Bạn không thể so sánh các chuỗi với ==!=. Về mặt kỹ thuật, điều đó sẽ chỉ so sánh các con trỏ chứ không phải giá trị mà bạn muốn làm.

Thay vào đó bạn muốn một cái gì đó như:

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

Cố gắng sử dụng

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

để so sánh các giá trị chuỗi, không == hay! =.

EDIT: Phủ nhận điều kiện.

1

Thank you guys để câu trả lời, chương trình cuối cùng đang chạy như tôi muốn.

tôi cũng nhận ra rằng yakitval của tôi có một dòng char mới ở cuối của nó. vì vậy tôi đã thêm điều này giống như để làm việc

yakitVal = [yakitVal stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
Các vấn đề liên quan