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