Ios AFNetworking和id ResponseObject不工作,无法恢复内容

Ios AFNetworking和id ResponseObject不工作,无法恢复内容,ios,objective-c,json,afnetworking,Ios,Objective C,Json,Afnetworking,经过几天的工作,我无法解决这个问题,我真的需要你的帮助,因为我完全被锁住了,我开始发疯了!!!!!!。我在Objective c for iOS中有一个项目,我从服务器获取数据,并将其放入我的应用程序中。我在从JSON恢复和保存数据时遇到了一些麻烦 我想使用“id responseObject”,并在项目的另一个区域保存和使用内容。每次尝试使用以下方法并在“setCompletionBlockWithSucess”之外使用“id responseObject”时,“id responseObje

经过几天的工作,我无法解决这个问题,我真的需要你的帮助,因为我完全被锁住了,我开始发疯了!!!!!!。我在Objective c for iOS中有一个项目,我从服务器获取数据,并将其放入我的应用程序中。我在从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]

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

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

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

我还没有测试过它,但我相信这应该可以通过一个简单的JSON响应来实现。如果没有,请使用
操作.响应字符串

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

非常感谢你的回答我感谢你的及时回答。这对我来说更清楚了,我发送了变量并在另一个类中解析它,它就像一个符咒!。正如你建议我的,我将深入研究目标C编程的这一部分,即sope+块。这个问题在语法上是错误的