2014-03-24 133 views
1

我试图根据用户是否选择了一个开关来显示数据。用户将有能力选择一个或两个开关,既可以在一个开关上,也可以在一个开关上或另一个开关上。数据将根据交换机的状态显示。基于uiswitch状态显示数据

我设法得到这个从plist文件敢数组加载但其只显示数据,它不管dosnt其状态的开关是它的显示器不敢真理或两者兼而有之。

- (IBAction)shownext:(id)sender { 
    if (!self.plistArray) { 
     NSString *path = [[NSBundle mainBundle] pathForResource: 
          @"data" ofType:@"plist"]; 
     NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults]; 
     if ([[defaults objectForKey:@"truthonoff"] isEqualToString:@"YES"] && [[defaults objectForKey:@"dareonoff"] isEqualToString:@"YES"] ) { 
      NSDictionary *plistDict1 = [[NSDictionary alloc] initWithContentsOfFile:path]; 
      NSArray * plistArray1 = plistDict1[@"truth"]; 
      NSDictionary *plistDict2 = [[NSDictionary alloc] initWithContentsOfFile:path]; 
      NSArray *plistArray2 = plistDict2[@"dare"]; 
      self.plistArray = [[plistArray1 arrayByAddingObjectsFromArray:plistArray2] mutableCopy]; 

     } else if ([[defaults objectForKey:@"truthonoff"] isEqualToString:@"YES"]) { 
      NSDictionary *plistDict3 = [[NSDictionary alloc] initWithContentsOfFile:path]; 
      NSArray *plistArray3 = plistDict3[@"truth"] ; 
      self.plistArray = [plistArray3 mutableCopy]; 
      NSLog(@"%@", plistArray); 
     } else ([[defaults objectForKey:@"dareonoff"] isEqualToString:@"YES"]); { 
      NSDictionary *plistDict4 = [[NSDictionary alloc] initWithContentsOfFile:path]; 
      NSMutableArray *plistArray4 = plistDict4[@"dare"]; 
      self.plistArray = [plistArray4 mutableCopy]; 
      NSLog(@"%@", plistArray); 
     } 
    } 
} 



-(void)stateSwitched:(id)sender { 
    UISwitch *tswitch = (UISwitch *)sender; 
    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults]; 
    [defaults setObject: tswitch.isOn ? @"YES" : @"NO" forKey:@"truthonoff"]; 

    [defaults synchronize]; 
} 

-(void)stateSwitcheddare:(id)sender { 
    UISwitch *tswitch = (UISwitch *)sender; 
    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults]; 
    [defaults setObject: tswitch.isOn ? @"YES" : @"NO" forKey:@"dareonoff"]; 

    [defaults synchronize]; 
} 

这是我设置对象

回答

3

尝试使用boolForKey而不是objectForKey代码。而在另一方面,为什么别人有一个条件?:

if ([defaults boolForKey:@"truthonoff"] && [defaults boolForKey:@"dareonoff"]) { 
    // Both true 
} else if ([defaults boolForKey:@"truthonoff"] && ![defaults boolForKey:@"dareonoff"]) { 
    // truthonoff true, dareonoff false 
} else if (![defaults boolForKey:@"truthonoff"] && [defaults boolForKey:@"dareonoff"]) { 
    // truthonoff false, dareonoff true 
} else { 
    // Both false 
} 

确保您在存储布尔值在NSUserStandardDefaults做两件事情:

  1. 使用setBool二传手:[[NSUserDefaults的standardUserDefaults] setBool:YES for forKey:@“a_key”];
  2. 请记住同步standardUserDefaults以保存值。
+0

嘿对不起已故的答复已经out信号。我已经给了这个去了,我得到了错误,我认为这可能是因为我没有impolmenting boolforkey正确,你能建议吗?错误是第一条if语句? – user3246508

+0

- (void)stateSwitched:(id)sender {UISwitch * tswitch =(UISwitch *)sender; NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; [默认setObject:tswitch.isOn? @“YES”:@“NO”forKey:@“truthonoff”]; [defaults synchronize]; } – user3246508

+0

解决了谢谢ypur帮助 – user3246508