仅设置捆绑开关 returns 是

Settings Bundle toggle switch only returns YES

我在我的应用程序中添加了一个设置包,其中包含许多切换开关,它用于根据激活的切换显示不同的图像。这第一次工作正常,但一旦将值设置为 YES,它总是 returns YES.

我已经使用以下方法删除了 NSUserDefaults 中的数据

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
    [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];

如果在每次启动应用程序之前更改设置,这将起作用。 (不理想)。有没有人遇到过这个并且知道如何更新和保留这些值?下面是我从 BOOL 值

中检索和查看的代码
BOOL setImageOne = (BOOL)[[NSUserDefaults standardUserDefaults]valueForKey:@"ladbrokes"];
BOOL setImageTwo = (BOOL)[[NSUserDefaults standardUserDefaults]valueForKey:@"williamHill"];

if (setImageOne) {
    self.clientLogoImageView.image = [UIImage imageNamed:@"clientOneLogo.png"];
}

if (setImageTwo) {
    self.clientLogoImageView.image = [UIImage imageNamed:@"clientTwoLogo.png"];
}

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];

bool 将存储在一个 NSNumber 对象中,因为原始类型不能存储在 Objective-C 集合 类 中,所以这个语句:

BOOL setImageOne = (BOOL)[[NSUserDefaults standardUserDefaults]valueForKey:@"ladbrokes"];

基本相同:

NSNumber *boolObj = @(NO);
BOOL b = (BOOL)boolObj;      // b == YES

当您的意图是:

BOOL b = [boolObj boolValue];   // b == NO

改用[NSUserDefaults boolForKey]