2013-07-15 37 views
3

我想在NSUserDefault中保存和檢索值。我正在成功保存並檢索價值。但是,當我去cak主頁,並再次進入我的課程價值不存儲和所有的過程再次完成。它不記得舊的價值。如何將整數值保存到NSuserDefault,如sqlite?

我做這個 -

-(void)ViewDidLoad{ 
    A = 0;    // int A; defone in .h 
    [self calling_Once]; 
} 

-(void)calling_Once{ 
    NSLog(@"A is: %d",A);  // A is always zero when I leave this class and return Back to this class. This is my only problem. I want A=1; when I go back And return to this class but 
    NSInteger B = [[NSUserDefaults standardUserDefaults] integerForKey:@"save_Interger_Value_For_Formula_One"]; //is not able to remeber value. It gives A=0; B =0; When I come back to this class, I want It should return A=1; B=1; and remember old value like sqlite when I return to this class. 

    if (A==0) { 
     [self refreshButton]; 
     NSLog(@"Before Increment A is: %d",A); 
     A++; 

     NSLog(@"After Increment A is: %d",A); 

     [[NSUserDefaults standardUserDefaults] setInteger:A forKey:@"save_Interger_Value_For_Formula_One"]; 
    } 

    NSInteger B = [[NSUserDefaults standardUserDefaults] integerForKey:@"save_Interger_Value_For_Formula_One"]; 
    B = A; 

    NSLog(@" B is: %d",B); 
    B = A; 
    NSLog(@" A is: %d",A); 
} 

任何想法或建議將是非常歡迎的。

+3

'[[NSUserDefaults standardUserDefaults] synchronize];',重複數百次。 – 2013-07-15 06:13:32

+0

-synchronize在單個進程中根本無法幫到您 –

+0

那麼,我該怎麼辦?你能給我一些想法嗎? –

回答

2

嘗試實現像this..Sure它會幫助...

@implementation ClassA 

- (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     // Do any additional setup after loading the view, typically from a nib. 
     [[NSUserDefaults standardUserDefaults]setInteger:100 forKey:@"save_Interger_Value_For_Formula_One"]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
    } 

@end 

@implementation ClassB 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
     int B = [[[NSUserDefaults standardUserDefaults]  integerForKey:@"save_Interger_Value_For_Formula_One"] integerValue]; 

    NSLog(@"Interger Value %d",b); 
} 
+0

這是行不通的。請給我一些想法。 –

+0

@NishaSingh試着看我編輯的答案...我認爲你會得到不同的價值,這不是保存。因爲你沒有轉換價值在整數.. –

+0

先生我只獲得價值,只有在課內,如果我回到另一個班級,然後再來這個班,然後福克斯不記得像Plist和SQLite的價值。 –

0

只是synchronizeNSUserDefaults插入值之後。

[[NSUserDefaults standardUserDefaults] synchronize]; 

你可以按照這個答案How to delete a user default value in NSUserDefaults?

在你的代碼最初要設置0到A,試試這個

-(void)ViewDidLoad 
{ 
     A = [[NSUserDefaults standardUserDefaults] integerForKey:@"save_Interger_Value_For_Formula_One"]; 
     [self calling_Once]; 
} 
0
NSUserDefaults * def=[NSUserDefaults standardUserDefaults]; 
    [def setInteger:yourvalue forKey:@"YourKey"]; 
    [def synchronize]; 

試試這個代碼....

+0

代碼工作正常。但是當我離開這門課並且再次進入這門課時,忘記了價值的福克斯。 –

+0

NSString * str = [[NSUserDefaults standardUserDefaults] stringForKey:@「save_Interger_Value_For_Formula_One」]; (@「%@」,str); – Jitendra

4

保存一個整數;

[[NSUserDefaults standardUserDefaults] setInteger:number forKey:@"unique_name"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

檢索它;

NSInteger x = [[NSUserDefaults standardUserDefaults] integerForKey:@"unique_name"]; 

祝你好運!

相關問題