0

Web サービスからデータを取得しています。そのデータを5つの画像を含むテーブルビューにロードし、いくつかの文字列データが完全に取得され、テーブルビューに正常にロードされます。しかし、ユーザーがブトゥーンをタップすると、もう一度そのWebサービスが呼び出されます。そのデータをそのテーブルビューにもう一度ロードします。

その負荷が再び重複するのを防ぎたいです。どうすればいいですか。

ユーザーがボタンをタップしてキーをNsuserDefaultに保存すると、保存しようとしました。次に、キーが存在する場合はwebserviceへの呼び出しがなく、キーが事前に設定されていない場合はwebserviceを呼び出さないでくださいが、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];
}

どうすればこれを解決できますか。

前もって感謝します..

4

1 に答える 1

0

こうすれば

1) この変数をグローバルとして宣言する

NSDictionary *json

2)ボタンがクリックされたときに最初にこの変数をチェックします

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

    }
于 2013-09-25T06:27:34.173 に答える