2009-11-24 28 views
7

Vì vậy, sự cố của tôi là:Mục tiêu-C - So sánh các số nguyên không hoạt động như mong đợi

Tôi nhận được chuỗi JSON từ trên mạng. Khi được giải mã (sử dụng các thư viện SBJSON), nó trở thành một NSDictionary mà NÊN chứa một số kiểu sắp xếp cho khóa 'userid'. Tôi nói 'nên' bởi vì khi tôi so sánh giá trị với int, hoặc NSINTEGER, hoặc NSNumber, nó không bao giờ đánh giá chính xác.

Đây là sự so sánh trong mã:

NSDictionary *userDictionary = [userInfo objectAtIndex:indexPath.row]; 

if ([userDictionary objectForKey:@"userid"] == -1) { 
//Do stuff 
} 

Giá trị bên trong từ điển mà tôi đang thử nghiệm với là -1. Khi tôi in nó ra để giao diện điều khiển bằng cách sử dụng NSLog nó thậm chí cho thấy nó là -1. Tuy nhiên, khi tôi so sánh nó với -1 trong câu lệnh 'if', nó sẽ đánh giá sai khi nó đúng. Tôi thậm chí đã thử so sánh với [NSNumber numberWithInt: -1], và nó vẫn đánh giá sai.

Tôi đang làm gì sai? Cảm ơn trước sự giúp đỡ của bạn!

Trả lời

16

Bạn đang so sánh con trỏ với đối tượng, không phải là số nguyên. Trước tiên, bạn phải chuyển đổi đối tượng thành một số nguyên:

if ([[userDictionary objectForKey:@"userid"] integerValue] == -1) 
{ 
    //Do stuff 
} 
Các vấn đề liên quan