【发布时间】:2013-08-22 04:22:58
【问题描述】:
我将字典添加到 NSUserDefaults 并调用“同步”方法,但是当我关闭我的应用程序并重新打开它时,保存在 NSUserDefaults 中的值为零。
#define kStartTime @"startTime"
#define kEndTime @"endTime"
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
NSString *startTime=@"08:00";
NSString *endTime=@"18:00";
NSDictionary *dict=[[NSDictionary alloc] initWithObjectsAndKeys:startTime,kStartTime,
endTime,kEndTime,
nil];
[defaults registerDefaults:dict];
[defaults synchronize];
在viewDidLoad 方法中我称之为:
NSString *startTimeValue=[defaults stringForKey:kStartTime];
当我在模拟器中重新打开我的应用程序时,startTimeValue 仍然为零。UserDefaults 是否无法保存在模拟器中???
我的意思是当我关闭我的应用程序并在模拟器中重新打开它时,值就消失了。
在我搜索了苹果文档后,我得到了这个。
registerDefaults:.
正如Apple Document中所说:将指定字典的内容添加到注册域中。
*注册域的内容没有写入磁盘;*每次应用启动时都需要调用这个方法。可以在应用的Resources目录下放置一个plist文件,调用registerDefaults : 包含您从该文件中读取的内容。
所以registerDefaults:的功能是在app中设置默认值,synchronize不会将默认值存入磁盘
【问题讨论】:
-
检查我更新的答案...只需复制并运行即可获得值...
-
尝试保存整个字典,如:[defaults setValue:dict forKey:@"dictionary"];并像这样获取它: NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];和 dict=[defaults valueForKey:@"dictionary"];
-
我刚刚编辑了你的代码并且工作正常检查它......
-
仅供参考,除非您需要通过 Settings.app 获取更改,否则不应显式调用同步。
-
转到 /users/USER_NAME/Library/Application\ Support/iPhone\ Simulator/6.1/Applications/APP_KEY/Library/Preferences/。如果您有 *.plist 文件,则意味着您正确保存了数据。您可以打开此文件并检查数据是否正确。
标签: ios nsuserdefaults