我使用下面的代码从我的应用程序中读取和写入bool值:
-(void)SaveAppSetting;
{
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
bool b=true;
[defaults setBool:b forKey:@"AnyKey"];
[defaults synchronize];
}
-(void)LoadAppSetting;
{
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
bool b=[defaults boolForKey: @"AnyKey"] ;
}
我发现“LoadAppSetting”效果很好,可以使用键“AnyKey”获得正确的item值。 函数“SaveAppSetting”看起来没有任何功能,它报告没有错误,但它不能使用键“AnyKey”更改项目的值。
设置包中的“AnyKey”设置为
item Dictionary
Type String PSToggleSwitchSpecifier
Title String AnyKey's Title
Key String AnyKey
DefaultValue Boolean Checked
有没有人遇到同样的问题? 谢谢interdev
答案 0 :(得分:1)
您是否尝试过使用BOOL类型。我并非100%确定它们完全相同。 BOOL是一个char类型,我认为bool是int。
-(void)SaveAppSetting;
{
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
BOOL b = YES;
[defaults setBool:b forKey:@"AnyKey"];
[defaults synchronize];
}
-(void)LoadAppSetting;
{
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
BOOL b=[defaults boolForKey: @"AnyKey"] ;
}
因为类型转换应该发生,所以真的不应该有所作为。对于它的价值,我使用以下内容来获得BOOL:
+ (void) setXEntryHighlighted:(BOOL) newValue
{
[[NSUserDefaults standardUserDefaults] setBool:newValue forKey:DEFAULTS_XENTRY_HIGHLIGHTED];
}
+ (BOOL) xEntryHighlighted
{
BOOL rValue = [[NSUserDefaults standardUserDefaults] boolForKey:DEFAULTS_XENTRY_HIGHLIGHTED];
return (rValue);
}
我稍后会同步以避免频繁写入。