2009-11-24 25 views
7

beklendiği gibi tamsayılar karşılaştırılması Yani benim sorunum bu çalışmıyor: Ben ağ üzerinden bir JSON dize alıyorumObjective-C -

. Kod çözüldüğünde (SBJSON kütüphaneleri kullanılarak), 'userid' anahtarı için bir çeşit sıralama içermesi gereken bir NSDictionary olur. Ben bir int veya bir NSInteger veya NSNumber değer karşılaştırmak çünkü gerekenlerdir, doğru değerlendirir asla deme. Ben -1 ile test ediyorum sözlüğe iç

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

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

değeri: Burada

kodunda karşılaştırmadır. NSLog kullanarak konsola yazdırırken, bunu -1 olduğunu bile gösterir. Yine de 'if' ifadesinde -1 ile karşılaştırdığımızda, doğru olması gerektiğinde yanlış olarak değerlendirir. [NSNumber numberWithInt: -1] ile karşılaştırmayı denedim ve hala false olarak değerlendiriyor.

Neyi yanlış yapıyorum? Yardımın için şimdiden teşekkürler!

cevap

16

Bir nesne değil, bir tamsayıdır kendisi için bir işaretçi karşılaştırılmaktadır.

if ([[userDictionary objectForKey:@"userid"] integerValue] == -1) 
{ 
    //Do stuff 
} 
: İlk bir tamsayı içine nesneyi dönüştürmek gerekir