通过使用" GET"获取数据当我从后台重新打开应用程序时,方法会丢失

时间:2016-06-07 05:37:03

标签: ios get nsurlconnection

这里我使用GET方法从服务器获取数据但是当我最小化时,应用程序进入后台并且在我重新打开之后我没有看到之前获取的任何数据,我只看到第一个数据时间,当我最小化并重新打开它时迷失在这里是我的代码

 - (void)viewDidLoad {
    [super viewDidLoad];

  NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://198.178.4.9:89/mybite_joomla/cron/webapi.php?task=webapi.viewProfile"]cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData
                                                 timeoutInterval:10
                              ];


  [request setHTTPMethod:@"GET"];

  [request setValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"content-type"];

NSError *err;
NSURLResponse *response;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];

NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingMutableContainers error: &err];{


for (NSDictionary *dict in jsonArray) {

    nameTextView.text =[jsonArray valueForKey:@"name"];

    usernameTextView.text =[jsonArray valueForKey : @"username"];

    emailTextView.text=[jsonArray valueForKey : @"email"];

    cityTextView.text =[jsonArray valueForKey : @"city"];

    stateTextView.text =[jsonArray valueForKey : @"state"];

    countryTextView.text =[jsonArray valueForKey : @"country"];
}
}

1 个答案:

答案 0 :(得分:0)

NSDictionary *jsonArray声明为(nonatomic,strong)的属性,并使用该属性检索数据或填充textField。

第二件事,如果您的应用程序在后台运行很长时间并处于挂起状态,那么您应该将数据存储在数据库中。因为一旦app被挂起,它就会释放实例内存。

第二个重要的事情是你不应该使用NSURLRequestReloadIgnoringLocalAndRemoteCacheData,因为它没有实现。

Apple documentation所述,

  

指定不仅应忽略本地缓存数据,而且应指示代理和其他中间人在协议允许的情况下忽略其缓存。   此常量未实现,不应使用。

因此,您可以将0作为参数传递给cachePolicy,也可以构建请求,如果timeoutInterval不是必需的。

  NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://198.178.4.9:89/mybite_joomla/cron/webapi.php?task=webapi.viewProfile"]];