如何在同一个ViewController中获得Nsuserdefault值?

时间:2016-06-09 05:23:06

标签: objective-c uibutton nsarray nsuserdefaults

我想做一个简单的应用程序,患者可以选择预约数据。

点击按钮后,我使用按钮显示每个数据。按钮将被禁用,因此用户无法多次选择相同的按钮。我要在数组中存储按钮的标签(我的标签代表从1到31的DATA)然后这个数组存储在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]];


    }

}

2 个答案:

答案 0 :(得分:1)

代码似乎是正确的,用于在NSUserDefaults中设置数组并从NSUserDefaults获取数组。

我所看到的唯一错误就是您key用于设置,并且NSUserDefaultssynchronize之间的价值不同。

在从UserDefaults获取数据时将数组设置为UserDefaults并键入“数据”时使用键“日期”。

另外,当您进行如下任何更改时,请不要忘记[[NSUserDefaults standardUserDefaults] synchronize]; UserDefaults,

map:

for each car
    evaluate whether it should be true or false
    key = (true/false)
    emit(key, { count : 1 })

reduce:

(input is true/false as key, array of count-documents as value)

for each value-document
    sum up the count
return key, sum

答案 1 :(得分: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]];


    }

}