2012-08-17 130 views
0

我需要保存一個變量,該變量在用戶每次點擊應用程序中的按鈕時遞增。我一直試圖用NSUserDefaults這樣做,但沒有成功。下面是我使用的代碼:保存增量int變量

[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"]; 

當我輸出此日誌中,但是,我不斷收到0

任何幫助將不勝感激。

+2

這行代碼看起來不錯。也許錯誤是在你的代碼的另一部分。 – 2012-08-17 06:00:59

+0

你有沒有同步userdefaults? – Aravindhan 2012-08-17 06:03:30

+0

是的,我試着同步默認值。即使在記錄變量'i'時,我總是一遍又一遍地返回'1'。我在這個類中聲明'i'是一個實例變量,我應該做一些與它不同的事情嗎? – bmueller 2012-08-17 06:10:03

回答

2

嘗試增加:

[[NSUserDefaults standardUserDefaults] synchronize]; 

每次你改變你的整數值時間之後。

引用蘋果公司的文件上synchronize

寫入任何修改永久域名到磁盤和更新 所有未修改的持久域,什麼是在磁盤上。

http://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html#//apple_ref/occ/instm/NSUserDefaults/synchronize

這一修改

所以,你的最終代碼應該是這樣的:

[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

編輯:其實轉念一想,試試這個:

我認爲問題在於使用i ++假定應用程序將始終能夠跟蹤計數,並且每次您重新輸入應用程序ig重置。

以下工作,我只是測試它。

if (![[NSUserDefaults standardUserDefaults] integerForKey:@"AppCount"]) { 
    [[NSUserDefaults standardUserDefaults] setInteger:i forKey:@"AppCount"]; 
}else{ 
    [[NSUserDefaults standardUserDefaults] setInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"AppCount"] + 1 forKey:@"AppCount"]; 
} 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
+0

你在哪裏以及如何聲明'我'?使用這段代碼,我每次調用日誌時都會回到0。 (這是我如何調用日誌,以防萬一我做錯了:'int log = [[NSUserDefaults standardUserDefaults] integerForKey:@「AppCount」]; NSLog(@「Pic count:%d」,log) ;' – bmueller 2012-08-17 06:36:11

+0

@bmueller我實際上甚至沒有聲明「我」讓你打開來做你自己的事情你想要一個可變的起點,如果不是這種情況,你可以使用「0」 – 2012-08-17 06:39:48

+0

好吧,它是再次增加,但仍然沒有保存...當我退出時,重新啓動應用程序,然後點擊按鈕,日誌說我的計數回到0. – bmueller 2012-08-17 06:43:17

0

你可以使用Static NSUIInteger appCount = 0; 在函數user tap中增加它的值appCount ++; 保持應用程序內函數調用的值。應用程序關閉後,將它寫入文件。

+0

我終於讓'appCount'通過使用'static NSInteger'來增加,但是當我關閉應用程序時它不會保存。 – bmueller 2012-08-17 06:23:26

+0

您可以添加一個變量到info.plist文件,然後在關閉應用程序之前爲其分配商店值,您可以訪問信息。plist date如 NSString * finalPath = [NSString stringWithFormat:@「%@」,[[NSBundle mainBundle] pathForResource:@「Info」ofType:@「plist」]]; NSDictionary * plistData = [NSDictionary dictionaryWithContentsOfFile:finalPath]; [plistData objectForKey:@「RemoteURL」]; – 2012-08-17 06:44:33

0
- (void)viewDidLoad { 

    [super viewDidLoad]; 

    countFirst= [[NSUserDefaults standardUserDefaults]integerForKey:@"Counter"]; 

    countFirst++; 

} 

寫這篇文章,無論你想遞增。

[[NSUserDefaults standardUserDefaults] setInteger:countFirst++ forKey:@"Counter"];