我需要保存一個變量,該變量在用戶每次點擊應用程序中的按鈕時遞增。我一直試圖用NSUserDefaults
這樣做,但沒有成功。下面是我使用的代碼:保存增量int變量
[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"];
當我輸出此日誌中,但是,我不斷收到0
。
任何幫助將不勝感激。
我需要保存一個變量,該變量在用戶每次點擊應用程序中的按鈕時遞增。我一直試圖用NSUserDefaults
這樣做,但沒有成功。下面是我使用的代碼:保存增量int變量
[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"];
當我輸出此日誌中,但是,我不斷收到0
。
任何幫助將不勝感激。
嘗試增加:
[[NSUserDefaults standardUserDefaults] synchronize];
每次你改變你的整數值時間之後。
引用蘋果公司的文件上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。 (這是我如何調用日誌,以防萬一我做錯了:'int log = [[NSUserDefaults standardUserDefaults] integerForKey:@「AppCount」]; NSLog(@「Pic count:%d」,log) ;' – bmueller 2012-08-17 06:36:11
@bmueller我實際上甚至沒有聲明「我」讓你打開來做你自己的事情你想要一個可變的起點,如果不是這種情況,你可以使用「0」 – 2012-08-17 06:39:48
好吧,它是再次增加,但仍然沒有保存...當我退出時,重新啓動應用程序,然後點擊按鈕,日誌說我的計數回到0. – bmueller 2012-08-17 06:43:17
你可以使用Static NSUIInteger appCount = 0; 在函數user tap中增加它的值appCount ++; 保持應用程序內函數調用的值。應用程序關閉後,將它寫入文件。
我終於讓'appCount'通過使用'static NSInteger'來增加,但是當我關閉應用程序時它不會保存。 – bmueller 2012-08-17 06:23:26
您可以添加一個變量到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
- (void)viewDidLoad {
[super viewDidLoad];
countFirst= [[NSUserDefaults standardUserDefaults]integerForKey:@"Counter"];
countFirst++;
}
寫這篇文章,無論你想遞增。
[[NSUserDefaults standardUserDefaults] setInteger:countFirst++ forKey:@"Counter"];
這行代碼看起來不錯。也許錯誤是在你的代碼的另一部分。 – 2012-08-17 06:00:59
你有沒有同步userdefaults? – Aravindhan 2012-08-17 06:03:30
是的,我試着同步默認值。即使在記錄變量'i'時,我總是一遍又一遍地返回'1'。我在這個類中聲明'i'是一個實例變量,我應該做一些與它不同的事情嗎? – bmueller 2012-08-17 06:10:03