我在我的应用程序中添加了一个由多个切换开关组成的设置包,它被用来显示不同的图像,这取决于哪个切换开关是活跃的。这在第一次运行良好,但一旦值被设置为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];
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]
代替