2016-06-09 42 views
-1

我想做一個簡單的應用程序,讓病人可以選擇預約數據。如何在同一個ViewController中獲取Nsuserdefault值?

我使用按鈕來顯示每個數據後點擊按鈕。該按鈕將禁用,因此用戶不能多次選擇相同的按鈕。我將存儲數組中的標籤(我的標籤代表數據從1到31),然後這個數組存儲在NSUserDefaults
現在我的問題是,當下次用戶前來所有按鈕被啓用,但我想禁用它已經選定

當下面的方法按鈕用戶點擊就會叫

-(void)AddAppointment :(UIButton *)sender 
{ 

    int DATA=(int)sender.tag; 

    //add data in array 
    [arrayApp addObject:[NSNumber numberWithInt:DATA]]; 
    NSLog(@"AppointmentFixed=%@",arrayApp); 
    UIButton *btnTemp=(UIButton *)[scrlView viewWithTag:DATA]; 
    btnTemp.enabled=false; 

    [btnTemp setBackgroundColor:[UIColor grayColor]]; 

    //add array in nsuserdefault 
    userDefault=[NSUserDefaults standardUserDefaults]; 
    [userDefault setObject:arrayApp forKey:@"data"]; 
} 

我用下面的按鈕代碼禁用時,下一次用戶來

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    arrayApp=[[NSMutableArray alloc]init]; 

    //get the array from nsuserdefault (not working) 
    arrayTemp=[[NSMutableArray alloc]init]; 
    userDefault=[NSUserDefaults standardUserDefaults]; 
    arrayTemp= [userDefault objectForKey:@"data"]; 
    //ArrayTemp doenst get any array it is just null :(

    for (int i=0; i<=arrayTemp.count; i++) 
    { 
     UIButton *btn2=(UIButton *)[scrlView viewWithTag:[[arrayTemp objectAtIndex:i+1] integerValue]]; 
     btn2.enabled=YES; 
     [btn2 setBackgroundColor:[UIColor grayColor]]; 


    } 

} 

回答

1

代碼似乎是正確的,爲NSUserDefaults設置陣列和NSUserDefaults越來越陣列已被選中的按鈕。

只是我看到的錯誤是key您正在使用的設置和獲取值來自NSUserDefaults是不同的。

從UserDefaults獲取時,您正在使用鍵「date」,同時將數組設置爲UserDefaults和鍵「data」。

另外,不要忘了synchronize UserDefaults當你做類似下面的任何變化,

[[NSUserDefaults standardUserDefaults] synchronize]; 
+0

感謝您的回答我提出的鍵名相同,但我的問題仍然存在,存儲到userdefaults,這不是零和調試之前 – Priya

+0

檢查數組發現@ Priya的問題 –

0

你的錯誤就在於,你NSuserDefault關鍵是不同的,而存儲和檢索的陣列。你可能只是錯過數組的第一個索引河套

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    arrayApp=[[NSMutableArray alloc]init]; 

    //get the array from nsuserdefault (not working) 
    arrayTemp=[[NSMutableArray alloc]init]; 
    userDefault=[NSUserDefaults standardUserDefaults]; 
    arrayTemp= [userDefault objectForKey:@"date"]; 

//ArrayTemp doenst get any array it is just null :(

    for (int i=0; i<arrayTemp.count; i++) 
    { 
     UIButton *btn2=(UIButton *)[scrlView viewWithTag:[[arrayTemp objectAtIndex:i] integerValue]]; 
     btn2.enabled=YES; 
     [btn2 setBackgroundColor:[UIColor grayColor]]; 


    } 

} 
相關問題