【问题标题】:AFNetworking and id reponseObject NOT working and not able to recover the contentAFNetworking 和 id reponseObject 不工作且无法恢复内容
【发布时间】:2014-05-30 14:49:31
【问题描述】:

经过几天的工作我无法解决这个问题,我真的需要你的帮助,因为我完全被锁定了,我开始发疯了!!!!!!。我在 iOS 的 Objective c 中有一个项目,我从服务器获取数据以放入我的应用程序。我在从 JSON 中恢复和保存数据时遇到了一些麻烦。

我想使用“id responseObject”,并在我的项目的另一个区域保存和使用内容。每次我尝试使用以下方法并在“setCompletionBlockWithSucess”之外使用“id responseObject”时,“id responseObject”为(null),我该怎么办?

NSURL *URL = [NSURL URLWithString:@"…."];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
op.responseSerializer = [AFJSONResponseSerializer serializer];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];
[[NSOperationQueue mainQueue] addOperation:op]

【问题讨论】:

  • 这个问题语法错误

标签: ios objective-c json afnetworking


【解决方案1】:

听起来你不太明白scope 是什么变量。如果是这样的话,这个项目对你来说可能太先进了。我敦促您阅读范围 + 块以更好地了解正在发生的事情。

setCompletionBlockWithSuccess 实际上是一个代码块,如果 URL 请求成功则执行。这意味着responseObject 不会立即执行!它会在一段时间后被传回,您可以在setCompletionBlockWithSuccess 中访问它。所以这就是为什么它在块之外是 nil。

做你想做的事非常简单。您需要在setCompletionBlockWithSuccess 中读取responseObject 并将其设置为您有权访问的另一个变量。或者您可以立即将其发送到另一个类进行解析/保存。

我尚未对其进行测试,但我相信这应该适用于简单的 JSON 响应。如果没有,请改用operation.responseString

NSString *jsonResponse;
NSURL *URL = [NSURL URLWithString:@"…."];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
op.responseSerializer = [AFJSONResponseSerializer serializer];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id   responseObject) {
    NSLog(@"JSON: %@", responseObject);
    jsonResponse = responseObject;
}

...

【讨论】:

  • 非常感谢您的回答非常感谢您的即时回答。这对我来说更清楚,我发送了变量并在另一个类中解析它,它就像一个魅力!正如你建议我的那样,我将更深入地研究这部分 Objective C 编程,即 sope+blocks
猜你喜欢
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 2012-09-15
  • 2019-12-21
  • 1970-01-01
相关资源
最近更新 更多