Проблема сравнения значения, возвращаемого методом valueForKey NSDictionary - PullRequest
1 голос
/ 16 августа 2011

Я использую TouchJSON, чтобы преобразовать следующее в объект NSDictionary

// sample JSON object
{
data =     (
            {
        companyId = 4779;
        companyName = "ABC Corporation";
    },
            {
        companyId = 4806;
        companyName = "EFG Corporation";
    }
);
dataCount = 2;
success = 1;
}

NSString *src = @"http://mysite/app1/companyList.php";
NSURL *url = [[NSURL alloc] initWithString:src];    
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
NSError *error = nil;
NSDictionary *dic = [[CJSONDeserializer deserializer] deserializeAsDictionary:data error:&error];

int dataCount = (int) [dic valueForKey:@"dataCount"];

// This is where I have problem with. The (dataCount == 1) expression never evaluates to true even if value of dataCount from the JSON object equals to 1.
if ( dataCount == 1 ){
  // do something
} else {
  // do something else
}

Я сделал что-то не так?

Буду признателен за любую помощь.

1 Ответ

1 голос
/ 15 ноября 2011

[dic valueForKey:@"dataCount"] будет NSNumber.Вам нужно будет позвонить -intValue, чтобы получить int.

int dataCount = [[dic valueForKey:@"dataCount"] intValue];
if (dataCount == 1) {
    ... 
}
...