如何使用AFN 3.0保存响应并将响应中的特定参数发送到服务器?

时间:2016-05-17 06:01:38

标签: ios objective-c json afnetworking-3

我将使用AFNetworking 3.0

在我的第一个视图中,当我输入手机号码并点击提交按钮然后它发送到服务器并从服务器获得响应,在该响应中,假设我得到2个参数(如id:xx,token:xxxxx,)。 / p>

现在我的问题是 -

当我从服务器得到响应然后我想进入第二个视图时,当我点击登录按钮时,我想只发送我从之前的响应中获得的令牌(不是id)。我怎样才能从中获取该令牌上一个视图并从当前视图发送它。

我试过这样,但它没有完成或没有工作。 我试图像这样保存响应数据:

 NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
 NSLog(@"responseData: %@", str);

并尝试发送第二个视图:

 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier]isEqualToString:@"loginsegue"])
       {
         loginViewController *lvc= [segue destinationViewController];
         lvc.str=_str;
       }
 }

1 个答案:

答案 0 :(得分:1)

AFNetworking正在将JSON数据转换为id中的iOS类型。您只需根据您的回复进行转换。

通常可以这样做。

NSDictionary *response = (NSDictionary *)responseObject;
NSString *token = [response valueForKey:@"token"];
//Save token some where to use it later.

一旦你有这个令牌,你可以

  1. 存放在某处,可能是NSUserDefaults(不推荐,但很简单)。
  2. 然后,当您需要传递该令牌时,您应该获取它(在您存储的任何位置),在我们的案例NSUserDefaults中,并将其发送到服务器。
  3. 请注意:如果您的令牌每次都在更改,您可以将其存储为临时(可能是单身)并在需要时使用它。只要您在任何视图控制器中可能需要令牌,就不应将其传递给每个视图控制器。最好让它在全球范围内可用。