2012-09-03 169 views
1

我一直在撞牆的頭幾天試圖瞭解如何在應用程序啓動後立即執行操作。啓動時重新加載內容

基本上我想從我的網站下載一個plist,如果用戶打開一個開關,確定他是否想在啓動時下載新內容。

點在於:

  • 「A」 類有重新加載內容的方法;
  • 「B」類有開關,如果打開,告訴委託作爲應用程序啓動

儘快進行重裝內容的方法現在,我不知道該怎麼告訴AppDelegate中來如果類「B」的開關打開,則運行類「A」的方法。很顯然,我需要使用NSUserDefaults,但在此之後我很失落。

任何人都可以讓事情更清楚嗎?或者,有沒有更舒適的解決方法呢?

回答

2

是的,你可以做到這一點使用NSUserDefaults的

你的班級b。

-(void)swithChanged 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    //check if !null 
    if(![[defaults objectForKey:@"shouldDownload"]isKindOfClass:[NSNull class]]){ 
     if([(NSNumber*)[defaults objectForKey:@"shouldDownload"]boolValue]) 
      { 
      [defaults setObject:[NSNumber numberWithInt:0] forKey:@"shouldDownload"]; 
      [defaults synchronize]; 
      }else{ 
      [defaults setObject:[NSNumber numberWithInt:1] forKey:@"shouldDownload"]; 
      [defaults synchronize]; 

     } 
    }else{ 
     //set your NSUserDefault here for the first time 
    } 

} 

在你的AppDelegate

- (void)applicationDidBecomeActive:(UIApplication *)application{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    //check if !null 
    if(![[defaults objectForKey:@"shouldDownload"]isKindOfClass:[NSNull class]]){ 
     if([(NSNumber*)[defaults objectForKey:@"shouldDownload"]boolValue]) 
      { 
       //you can write the downloadData method in this appDelegate, 
      //[self downloadData] 

      //OR 
      AClass *aClass = [AClass alloc]init]; 
      [aClass downloadData]; 
      }else{ 
      //do not download 
     } 
    }else{ 
     //the default behaviour of app, download or not? 
    } 

} 
+0

非常感謝您的回答!只是一個問題:在AppDelegate中,當你寫[self downloadData]時,我應該初始化我的「A」類,然後執行該方法,對吧! – Phillip

+1

我編輯了答案。 – janusbalatbat

+0

完美。謝謝! +1 – Phillip