简体   繁体   English

我无法存储或读取NSUserDefaults

[英]I can't store or read NSUserDefaults

It seems something is going wrong, I can't store or read NSUserDefaults in my code: 似乎出了点问题,我无法在代码中存储或读取NSUserDefaults:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSArray * defaultKeys = [NSArray arrayWithObjects:
                                    @"FirstViewComposer",
                                    @"ProfileNickname",
                                    @"ProfileGender",
                                    @"ProfileDateOfBirth",
                                    @"ProfileFavoriteColor",
                                    @"ProfileHeight",
                                    nil];


NSArray * defaultValues = [NSArray arrayWithObjects:
                                    @"YES",
                                    @"Me",
                                    @"Male",
                                    @"08 Dec 1983"
                                    @"Red",
                                    @"183",
                                    nil];

 NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:defaultValues forKey:defaultKeys];


 [defaults registerDefaults:appDefaults];

 NSLog(@"%@", [defaults stringForKey:@"FirstViewComposer"]); //null

thanks 谢谢

UPDATE : Now I'm synchronized, actually they are stored but I'm probably not retrieving them correctly: 更新 :现在我已同步,实际上它们已存储,但是我可能没有正确检索它们:

2011-08-23 17:16:06.932 Sansnuage[1404:b603] defaults: (
        (
        en,
        fr,
        de,
        ja,
        nl,
        it,
        es,
        pt,
        "pt-PT",
        da,
        fi,
        nb,
        sv,
        ko,
        "zh-Hans",
        "zh-Hant",
        ru,
        pl,
        tr,
        uk,
        ar,
        hr,
        cs,
        el,
        he,
        ro,
        sk,
        th,
        id,
        "en-GB",
        ca,
        hu,
        vi
    ),
    1,
        (
        YES,
        Me,
        Male,
        "08 Dec 1983Red",
        183
    ),
    "en_US",
        (
        "en_US@hw=US;sw=QWERTY"
    ),
        (
        en,
        fr,
        de,
        ja,
        nl,
        it,
        es,
        pt,
        "pt-PT",
        da,
        fi,
        nb,
        sv,
        ko,
        "zh-Hans",
        "zh-Hant",
        ru,
        pl,
        tr,
        uk,
        ar,
        hr,
        cs,
        el,
        he,
        ro,
        sk,
        th,
        id,
        "en-GB",
        ca,
        hu,
        vi
    ),
    macintosh
) 

You have to synchronize your data before retrieve them from disk. 您必须先同步数据,然后才能从磁盘检索数据。 To do so you should use synchronize method. 为此,您应该使用同步方法。

UPDATE: You should change the way you try to store your appDefaults NSDictionary. 更新:您应该更改尝试存储appDefaults NSDictionary的方式。 Try: 尝试:

#define kAppDefaultEnty @"AppDefaultsEntry"
[defaults setObject:appDefaults forKey:kAppDefaultEnty];

And then synchronize it: 然后同步它:

[defaults synchronize];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM