gpt4 book ai didi

ios - 根据uiswitch状态显示数据

转载 作者:行者123 更新时间:2023-12-01 19:01:29 25 4
gpt4 key购买 nike

我正在尝试根据用户是否选择了开关来显示数据。用户将能够选择一个或两个开关来同时打开或一个或另一个打开。然后将根据开关的状态显示数据。

我已经设法让它加载,但是它只显示来自 plist 文件中的敢数组的数据,并且无论开关处于哪个状态都显示不敢真或两者兼而有之。

- (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];
}

这是我设置对象的代码

最佳答案

尝试使用 boolForKey 而不是 objectForKey。另一方面,为什么 else 有条件?:

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 中存储 bool 值时做两件事:
  • 使用 setBool setter :[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"a_key"];
  • 请记住同步标准用户默认值以保存值。
  • 关于ios - 根据uiswitch状态显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22620882/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com