无法保存到 iOS 7.0.2 上的 NSUserDefaults

Posted

技术标签:

【中文标题】无法保存到 iOS 7.0.2 上的 NSUserDefaults【英文标题】:can't save to NSUserDefaults on iOS 7.0.2 【发布时间】:2013-10-02 20:50:03 【问题描述】:

在我的应用程序中,我使用 NSUserDefaults 并将我的 iPhone 更新到最新的 ios 7.0.2。从那时起,该应用程序不会保存我想要保存在 NSUserDefaults 中的数据。

我记得从 iOS 5 开始,您必须向用户征求许可,是这样吗?

以下代码,保存忘记密码状态,即“发送您的电子邮件”->“等待代码”->“成功”

用户插入他的电子邮件并收到一封带有代码的电子邮件,在插入代码后他可以设置他的新密码。 我的代码是:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *temp = [defaults valueForKey:FORM_STATUS];

我从来不需要同步。上述代码在 IOS v7.0.2 之前运行良好,并且该错误仅在真实设备上发生。不在模拟器或带有 IOS 7.0 的设备上。 昨天我用我的 iPhone 检查了它,晚上我更新了我的设备并再次检查。

如果有人记得 IOS 5,如果您没有请求使用照片的权限,您将看不到模态视图。我记得当时创建了一个使用用户照片库的应用程序,但它停止在真正更新的设备上运行(当时)。

【问题讨论】:

显示您的代码。改为加载默认值时会得到什么? 请求保存到NSUserDefaults的权限? 您不需要在 NSUserDefaults AFAIK 中存储数据的权限。 我猜这又是一个“你必须打电话给- synchronize”的问题。 -synchronize 应该是不必要的,除非在异常终止的情况下。请注意,“异常”包括调试器中的“停止”按钮,以及由于内存压力而终止。 【参考方案1】:

存储:

NSString * Authkey = @"Sivarwin";
NSUserDefaults *storeData=[NSUserDefaults standardUserDefaults];
[storeData setObject:Authkey forKey:@"Key"];
NSLog(@"SYMBOL : %@",Authkey);

检索:

NSUserDefaults *storeData=[NSUserDefaults standardUserDefaults];
NSString *loginString = [storeData valueForKey:@"Key"];
NSLog(@"%@ Saved String ",loginString);

【讨论】:

您的代码应该可以工作,所以我会将其标记为已回答。但我想问题出在 iOS 版本上(当时是测试版)

以上是关于无法保存到 iOS 7.0.2 上的 NSUserDefaults的主要内容,如果未能解决你的问题,请参考以下文章

NSUser Defaults 保存按钮状态并再次显示

当应用程序启用数据保护时,在 ios 中写入 nsuser 默认值时出现 CfPrefrences 错误

无法保存 Paypal 方法设置 magento 1.7.0.2

iOS 中的 XCTest 和 UI 测试

无法从 iOS6 中的后台线程调用主线程上的代码

iOS:XCode 5 中未检测到具有 7.0.2 的设备 [重复]