2012-02-13 27 views
0

我目前正在編寫一個應用程序,從商店調用文本文件,顯示它,然後遞增,以便可以在需要時加載下一個文件。我已經通過使用按鈕單擊工作了基本代碼,但是我希望它只能在自上次加載完成24小時後才能夠調用文本文件,以便每天更新。iPhone應用程序與增加調用文本文件,使用NSDate和NSUserDefaults

我試圖通過使用NSDate和NSUserDefaults來存儲上次調用文件的時間,然後將它與當前時間進行比較,如果它已超過24小時增量並調用下一個時間。

但是,在嘗試添加事物並在下面的基本代碼周圍進行更改後,我無法弄清楚如何使其工作。我不知道這是否僅僅是因爲我沒有足夠的經驗,並且不太瞭解這門語言,或者我只是有點傻,錯過了一些非常簡單的東西。

任何幫助將不勝感激。

NSDate *nowDate = [NSDate date]; 
[[NSUserDefaults standardUserDefaults] setObject:nowDate forKey:@"LastLoaded"]; 

NSDate *lastLoaded = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastLoaded"]; 

NSDate *checkDate = [NSDate dateWithTimeIntervalSinceNow:-24*60*60]; 
if([lastLoaded compare:checkDate] == NSOrderedAscending) { 
    static int number = 1; 
    NSString *filePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%i",number++] ofType:@"txt"]; 
    if (filePath) { 
     NSString *textFromFile = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 
     if (textFromFile) { 
      textView.text = textFromFile; 
     } 
    } 
} 
+0

當你運行你的代碼時會發生什麼? – yuji 2012-02-13 00:35:23

+0

它顯示第一個文本文件,但在將日期更改爲24小時後,它仍顯示第一個文件並且不更新它。 – Lanny 2012-02-13 01:15:16

回答

1

代碼中存在一個錯誤。您沒有從NSUserDefaults中檢索上次更新日期。您正在檢索當前日期,因爲您在第二行代碼中用當前日期覆蓋LastUpdatedate。

//NSDate *nowDate = [NSDate date]; 
//[[NSUserDefaults standardUserDefaults] setObject:nowDate forKey:@"LastLoaded"]; 

NSDate *lastLoaded = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastLoaded"]; 

//NSDate *checkDate = [NSDate dateWithTimeIntervalSinceNow:-24*60*60]; 
if ([lastLoaded timeIntervalSinceNow] < -24*60*60){ 
//Now you can update the NSUserDefaults 
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"LastLoaded"]; 
//if([lastLoaded compare:checkDate] == NSOrderedAscending) { 
static int number = 1; 
NSString *filePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%i",number++] ofType:@"txt"]; 
if (filePath) { 
    NSString *textFromFile = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 
    if (textFromFile) { 
     textView.text = textFromFile; 
    } 
} 
} 
+0

它仍然不起作用,只顯示第一個文本文件,不更新。這可能是因爲每次條件爲真時,它會將數字重新設置爲1,覆蓋增量。 – Lanny 2012-02-13 18:37:13

+0

你可以嘗試調試一下嗎?比如說把一個Nslog的號碼和它的價值看在條件內?是通過在內部放置nslog來解僱的嗎? – mbh 2012-02-14 02:30:21

+0

將NSLog添加到數字中,並且在將系統日期更改爲第二天的過程中它始終保持爲1。 – Lanny 2012-02-14 03:26:28

相關問題