Проблема с SBJsonParser - PullRequest
       9

Проблема с SBJsonParser

1 голос
/ 02 октября 2011

мое приложение iPhone получает от моего веб-сервиса строку json:

{"res":true,"users":[{"id":"79","username":""},{"id":"81","username":""},{"id":"83","username":""},{"id":"80","username":""},{"id":"82","username":""}]}

Я работаю со следующим кодом:

SBJsonParser *jsonParser = [[SBJsonParser alloc] init];
NSError *error = nil;

NSDictionary *dictionary = [jsonParser objectWithString:responseString error:&error];

где responseString - строка, полученная с помощью JSON.

Теперь, если я проверю [[dictionary valueForKey:@"res"] boolValue], это правильно логическое значение. Проблема в [dictionary objectForKey:@"users"] Я не понимаю, что это за объект.

Я пытаюсь также с этим:

NSLog(@"Is of type NSString?: %@", ([[dictionary objectForKey:@"users"] isMemberOfClass:[NSString class]])? @"Yes" : @"No");
NSLog(@"Is of type NSArray?: %@", ([[dictionary objectForKey:@"users"] isMemberOfClass:[NSArray class]])? @"Yes" : @"No");
NSLog(@"Is of type NSMutableArray?: %@", ([[dictionary objectForKey:@"users"] isMemberOfClass:[NSMutableArray class]])? @"Yes" : @"No");
NSLog(@"Is of type NSDictionary?: %@", ([[dictionary objectForKey:@"users"] isMemberOfClass:[NSDictionary class]])? @"Yes" : @"No");
NSLog(@"Is of type NSMutableDictionary?: %@", ([[dictionary objectForKey:@"users"] isMemberOfClass:[NSMutableDictionary class]])? @"Yes" : @"No");

но это всегда говорит No.

Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 02 октября 2011

Вы должны использовать isKindOfClass: вместо isMemberOfClass:, потому что коллекции обычно реализуются как кластеры классов в Какао.

Кроме того, NSLog(@"%@", NSStringFromClass([[dictionary objectForKey:@"users"] class])) гораздо короче, чем проверка каждого возможного класса в отдельности.

...