0

我正在尝试编写一段使用 reddits JSON 格式的代码。我打算访问网址:http ://www.reddit.com/r/pics/new/.json ,搜索字符串:“title”:“并将从那里到下一个撇号”的所有内容写入日志,继续,直到所有标题都写入日志。

到目前为止,我有这个,但我没有得到任何日志输出。有谁能够帮助我?

- (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);
    }
}

哦,这一切都没有错误,但这并不奇怪。

非常感谢您的帮助、所有提示、更正或任何其他非常感谢的事情。

4

1 回答 1

0

NSScanner是工作的错误工具。您最好使用 JSON(反)序列化器,例如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);
}];
于 2013-11-18T22:33:31.857 回答