【问题标题】:How to get Nsuserdefault value in same ViewController?如何在同一个 ViewController 中获取 Nsuserdefault 值?
【发布时间】:2016-06-09 05:23:05
【问题描述】:

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

单击按钮后,我使用按钮显示每个数据。按钮将禁用,因此用户不能多次选择同一个按钮。我要将按钮的标签(我的标签代表从 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]];


    }

}

【问题讨论】:

    标签: objective-c uibutton nsarray nsuserdefaults


    【解决方案1】:

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

    我看到的唯一错误是 key 您用于设置和获取 NSUserDefaults 的值不同。

    您在将数组设置为 UserDefaults 时使用键“date”,在从 UserDefaults 获取时使用键“data”。

    另外,当您进行如下任何更改时,不要忘记synchronize UserDefaults,

    [[NSUserDefaults standardUserDefaults] synchronize];
    

    【讨论】:

    • 感谢您的回答,我将密钥名称设为相同,但我的问题仍然存在
    • 在存储到 userdefaults 之前检查数组它不是 nil 并调试以找到问题@Priya
    【解决方案2】:

    您的错误是您的 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]];
    
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多