2013-11-18 1 views
0

Я пытаюсь написать фрагмент кода, который будет использовать формат reddits JSON. Я намерен посетить url: http://www.reddit.com/r/pics/new/.json, поиск строки: «title»: «и писать все оттуда до следующего апострофа» в журнал, продолжая до тех пор, пока все записи не будут записаны в журнал.Использование Objective-c для анализа информации из JSON url

До сих пор у меня это есть, но я не получаю выход журнала. Кто-нибудь может мне помочь?

- (void)viewDidLoad 
{ 
    NSString *redditString = @"http://www.reddit.com/r/pics/new/.json"; 
    NSURL *redditURL = [NSURL URLWithString:redditString]; 
    NSError *error; 
    NSCharacterSet *commaSet; 
    NSScanner *theScanner; 
    NSMutableString *jsonText = [[NSMutableString alloc] init]; 
    NSString *TITLE = @"\"title\": \""; 
    NSString *postTitle; 
    commaSet = [NSCharacterSet characterSetWithCharactersInString:@"\""]; 
    theScanner = [NSScanner scannerWithString:jsonText]; 
    [jsonText appendString:[NSString stringWithContentsOfURL:redditURL encoding:NSASCIIStringEncoding error:&error]]; 
    if ([theScanner scanString:TITLE intoString:NULL] && [theScanner scanUpToCharactersFromSet:commaSet intoString:&postTitle] && [theScanner scanString:@"\"" intoString:NULL]) { 
      NSLog(@"%@", postTitle); 
    } 
} 

О, и все это строится без ошибок, но это не удивительно.

Большое спасибо за помощь, все советы, исправления или что-то еще очень ценное.

+0

NSScanner - неправильный инструмент для работы. Вместо этого взгляните на NSJSONSerialization. –

+0

@GabrielePetronella хорошо, что значительно облегчает жизнь, спасибо. – user2448359

ответ

0

NSScanner является неправильным инструментом для работы. Вместо этого вам следует использовать сериализатор JSON (de), например NSJSONSerialization.

Чтобы сделать вашу жизнь еще проще, вы можете использовать AFNetworking, сетевую инфраструктуру, которая поддерживает запросы JSON. Ваш код уменьшится примерно до

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
[manager GET:@"http://www.reddit.com/r/pics/new/.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSArray *entries = responseObject[@"data"][@"children"]; 
    for (NSDictionary *entry in entries) { 
     NSLog(@"%@", entry[@"title"]); 
    } 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
}];