Я использую API поиска iTunes, чтобы вернуть число пользователей, которые просмотрели мою текущую версию приложения. Поскольку я еще не выпустил приложение, я должен обработать случай, когда API поиска iT ничего не возвращает.iOS 8: обработка данных, возвращаемых из iTunes Search API
Вот уместна код:
NSDictionary *iTunesDict = [NSJSONSerialization
JSONObjectWithData:iTunesData options:0 error:&error];
NSArray *resultCount = @[[iTunesDict valueForKey:@"resultCount"]];
NSLog(@"%@", [resultCount objectAtIndex:0]);
if ([resultCount objectAtIndex:0] == 0) {
self.numberOfReviewers = @"0";
} else {
NSArray *reviewers = @[[[iTunesDict valueForKey:@"results"] valueForKey:@"userRatingCountForCurrentVersion"]];
if ([reviewers objectAtIndex:0] == nil) {
self.numberOfReviewers = @"0";
} else {
NSString *howManyReviewed = [[[reviewers objectAtIndex:0] objectAtIndex:0] stringValue];
self.numberOfReviewers = howManyReviewed;
}
Мои проблемные центры вокруг первого if
заявления. После осмотра, стоимость ...
[resultCount objectAtIndex:0]
является: (__NSCFNumber *)(long)0
не удовлетворяет условию в моем первом if
.
Что мне нужно сделать ** (__NSCFNumber *)(long)0
** ==0
??
Вам нужно заменить '' resultCount' с resultCount [0] '. 'resultCount' в' NSArray'. – rmaddy
Итак, ссылаясь на способ возврата веб-службы данными путем каста (long), это в основном простая оболочка NSNumber на примитивном типе данных? –
Да, это правильно. Вы можете размещать объекты только в NSDictionary, которые получены из NSObject (NSDictionary, UIImage, NSString и т. Д.). Простым способом переноса примитивного типа данных в NSNumber является его включение в @(), например. '@ (1,567)'. –