English 中文(简体)
在设置包中存储 NNSUser Defaults 的数值
原标题:Storing values from NSUserDefaults in Settings bundle

我试图找出如何从NSDDefaults中保存/存储我的价值, 这样当我退出应用程序时, 它们就会被存储在设置. bundle. bundle。 这就是我正在做的...

NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:@"M1", @"IDMissiles", 
                                                                    @"G2", @"IDGuns", 
                                                                    @"B3", @"IDBombs",
                                                                    @"KM", @"IDDistance", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:settings];

如果我做以下工作, 数值打印正确 从NSUser Defaults打印出来...

NSLog(@"IDMissiles: %@", [userDefaults stringForKey:@"IDMissiles"]);
NSLog(@"IDGuns    : %@", [userDefaults stringForKey:@"IDGuns"]);
NSLog(@"IDBombs   : %@", [userDefaults stringForKey:@"IDBombs"]);
NSLog(@"IDDistance: %@", [userDefaults stringForKey:@"IDDistance"]);

...然而,每当我运行NSUSER Defaults 中的值时,每次运行应用程序时, NSSUSER Defaults 中的值都以(null) 开头, 我在想做 [[NSUSER Defaults 标准 User Defaults] 同步; 将存储下次运行应用程序时的值,但没有这样的运气 。

最佳回答

在与设置.bundle 一起工作时,我发现一件事是,在您实际打开设置窗格之前,没有一个值会被初始化。您可以在那里保存默认值,但在您打开设置之前,它们会返回零。

我不确定这是否发生在尝试保存值时, 但从不打开设置窗帘 。

如果您没有使用设置窗帘, 您就不会想要使用注册“ 默认” 选项 。

试试这个吧

[[NSUserDefaults standardDefaults] setObject:@"M1" forKey:@"IDMissiles"];
// set remaining values
[[NSUserDefaults standardDefaults] synchronize]; // this really only needs to be called if you plan on accessing values right away, otherwise they are saved automatically after the next run loop
问题回答

而不是使用

[[NSUserDefaults standardUserDefaults] registerDefaults:settings];

尝试此选项 :

[[NSUserDefaults standardUserDefaults] setObject:settings forKey:@"settings"];

然后,从这样的缺省中吸取教训:

NSLog(@"IDMissiles:%@[[[NSUserDefaultsstandardUserDefaults]objectForKey:@"settings"]objectForKey:@"IDMissiles"]);

发自文件:

注册域的内容不是写入磁盘的; 您需要每次应用程序启动时都使用这个方法。 您可以在应用程序 s 资源目录中放置一个列表文件, 并调用登记簿Defaults: 包含您从文件中读到的内容 。

换句话说, 您没有通过注册这样的默认值来存储任何默认值 。 要在您的应用程序和设置包中同时持有默认值, 您就必须按照讨论过的“ https:// stackoverflow. com/ questions/ 9025676/ gettting- default- value- from- seconds- bundle” 将设置捆绑单独保存 。

   NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
   [NSUserDefaults removeObjectForKey:@"userDefaults"];
   [userDefaults setObject:[settings objectForKey:@"mainData"] forKey:@"userDefaultsValue"];
   [userDefaults synchronize];




相关问题
Code sign Error

I have created a new iPhone application.I have two mach machines. I have created the certificate for running application in iPhone in one mac. Can I use the other mac for running the application in ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

将音频Clips从Peter改为服务器

我不禁要问,那里是否有任何实例表明从Peit向服务器发送音响。 I m不关心电话或SIP风格的解决办法,只是一个简单的袖珍流程......

• 如何将搜查线重新定位?

我正试图把图像放在搜索条左边。 但是,问题始于这里,搜索条线不能重新布署。

热门标签