代码之家  ›  专栏  ›  技术社区  ›  arachide

无法设置应用程序设置的bool值

  •  1
  • arachide  · 技术社区  · 15 年前

    我使用下面的代码从应用程序中读写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

    1 回复  |  直到 15 年前
        1
  •  1
  •   Steven Noyes    15 年前

    你试过用布尔型的吗?我不能百分之百肯定它们是完全一样的。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"] ;
    }
    

    确实不应该有什么不同,因为应该进行类型转换。不管值多少钱,我用下面的话来发泄一下:

    + (void) setXEntryHighlighted:(BOOL) newValue
    {
        [[NSUserDefaults standardUserDefaults] setBool:newValue forKey:DEFAULTS_XENTRY_HIGHLIGHTED];
    }
    + (BOOL) xEntryHighlighted
    {
        BOOL   rValue = [[NSUserDefaults standardUserDefaults] boolForKey:DEFAULTS_XENTRY_HIGHLIGHTED];
        return (rValue);
    }
    

    我稍后会同步以避免频繁写入。