我正在尝试编写一段将使用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);
}
}
哦,这一切都没有错误,但这并不奇怪。
非常感谢您的帮助,所有提示,更正或其他非常感谢的内容。
答案 0 :(得分: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);
}];