只调用一次 WebServcie?

Posted

技术标签:

【中文标题】只调用一次 WebServcie?【英文标题】:Call WebServcie Only once? 【发布时间】:2013-09-25 06:13:46 【问题描述】:

我正在从 web 服务获取一些数据。并将该数据加载到包含 5 个图像的 tableview 中,并且一些字符串数据得到完美并成功加载到 tableview。但是当用户点击按钮时再次点击一次再次调用该 webservcie。并再次将该数据加载到该表视图中。

我想防止再次加载重复。我该怎么做。

当用户点击按钮时,我尝试保存并在 NsuserDefault 中保存密钥。然后检查天气是否存在密钥不调用 web 服务,如果密钥未预设不调用 web 服务,但它在 tablview 中显示为空白。在密钥保存在 NsDictionary 之后。

代码在这里。

-(void)btnCliked

  AppDelegate * delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];


    NSLog(@"%@",[delegate.def objectForKey:@"Check"]);

    if([delegate.def objectForKey:@"Check"])
    


    
    else
    
    delegate.str= [delegate.imgurl stringByAppendingString:@"getappdata.php"];    // Get data through php file

    NSLog(@"%@",delegate.str);

    NSURL * url=[NSURL URLWithString:delegate.str];

    NSData * data=[NSData dataWithContentsOfURL:url];

    NSError * error;

    //Get json data in Dictionary
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingMutableContainers error: &error];

    NSLog(@"%@",json);

    NSLog(@"%@",delegate.firstArray);

    NSArray * responseArr = json[@"Deviceinfo"];

    for(NSDictionary * dict in responseArr)
    
        [delegate.firstArray addObject:[dict valueForKey:@"Appname"]];
        [delegate.secondArray addObject:[dict valueForKey:@"Description"]];
        [delegate.thirdArray addObject:[dict valueForKey:@"Icon"]];
        [delegate.fourthArray addObject:[dict valueForKey:@"Link"]];

    

    NSLog(@"%@",delegate.firstArray);
    NSLog(@"%@",delegate.secondArray);
    NSLog(@"This is image path array %@",delegate.thirdArray);
    NSLog(@"this is  App Link Array %@",delegate.fourthArray);


    [delegate.def setObject:delegate.firstArray forKey:@"Check"];
    [delegate.def synchronize];

    

    GetMoreAppsViewController * gmavc=[[GetMoreAppsViewController alloc]initWithNibName:@"GetMoreAppsViewController" bundle:nil];

    [self.navigationController pushViewController:gmavc animated:YES];

我该如何解决这个问题。

提前谢谢..

【问题讨论】:

【参考方案1】:

这样做

1)将此变量声明为全局变量

NSDictionary *json

2) 点击按钮时首先检查这个变量

if(json==nil)
    
       // call web service

    

【讨论】:

如何在这个类 tableViewController.fetchedObjects 中访问我的 tablview

以上是关于只调用一次 WebServcie?的主要内容,如果未能解决你的问题,请参考以下文章

WebServcie结合Spring结合动态代理进行抽象封装以及性能优化

Java 请求webServce接口

php webservcie

java定时任务使用多线程webservcie执行了两次这是为啥?

Eclipse: Android Device Chooser - Unknown Target

srand() — 为啥只调用一次?