0

我正在尝试使用 NSScanner 过滤来自 AFHTTPRequestOperation 的响应。问题是我无法在 NSString 方法中从 AFHTTPRequestOperation 返回字符串。有人有想法么?

-(NSString*)queryResponseID {
//Find ID from https request
NSLog(@"Finding Location ID");
NSString *queryResponseID=@"";
NSString *clientID = @"myclientID";
if (!clientID) {
    NSLog(@"Need Clinet ID");

}




NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://api.domain.com/client_id=%@",clientID]]];



AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]
                                     initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

    NSLog(@"%@", responseObject);


} failure:nil];
[operation start];

queryResponseID = operation.responseString;


return queryResponseID;



}
4

1 回答 1

0

因为响应是异步的,所以在您的方法返回时它还没有到达。您需要在成功完成块中收集字符串并在那里(或在从那里调用的方法)处理它,并删除您当前使用的 return 语句。


最重要的是,我想说你想做的事情可以用不同的方法更简单地完成。您应该过滤实际的数据对象,而不是尝试NSScanner在原始 JSON 文本上使用。AFNetworking 已经为您解包(到responseObject),利用它并​​使用 KVC 的组合valueForKey:NSArray方法)并NSPredicate提取您想要的信息。

于 2014-04-14T17:08:47.667 回答