设置捆绑切换开关仅返回YES

时间:2015-07-08 15:01:12

标签: ios objective-c ios7 settings-bundle

我在我的应用程序中添加了一个设置包,其中包含许多切换开关,它用于显示不同的图像,具体取决于哪个切换处于活动状态。这在第一次工作正常,但是一旦将值设置为YES,它总是返回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];

1 个答案:

答案 0 :(得分:2)

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]