只是想知道是否有人遇到过这个问题?
我目前正在使用Objective-C在iOS中开发应用程序。
有时,在编译应用程序后,NSUserDefaults
中的数据将会丢失。
但如果我忽略它并再次重新编译应用程序,数据会突然重新出现。
我已经在几个地方同步(不是在每个键中,而是在几个地方)。
如果有人碰巧遇到此问题,我希望您能分享如何处理此问题。
P.S。我需要一个存储空间来保存1个特定对象,以便在应用程序重新打开时检索它。
编辑添加代码
NSString *enPIN = [[NSString alloc]initWithString:[NSString stringWithFormat:@"%@", [enterField.text md5]]];
[[NSUserDefaults standardUserDefaults] setObject:enPIN forKey:@"pin"];
[[NSUserDefaults standardUserDefaults]synchronize];
NSLog(@"check pin %@", [[NSUserDefaults standardUserDefaults] objectForKey:@"pin"]);
该对象是一个字符串,我使用md5对其进行哈希处理,然后将其存储在nsuserdefault中,如果它只是随机消失可能并不奇怪,但如果我重新编译应用程序,它也会在消失之后再次重新编译
答案 0 :(得分:0)
检查您的默认值是仅使用字符串值还是bool等。
如果您正在使用任何带有类(如键和参数)的Object(如NSObject)来存储默认值,我更喜欢在存储和检索值之前进行相应的编码和解码。
此外,如果您存储任何NSDictionary检查该字典中的任何对象值是否不是Bool,String之外的任何内容,如果还存储了任何NSObject类或引用,那么您可能会面临同样的问题。
关于如何在存储到NSUserDefaults之前对对象进行编码,请参阅此stackoverflow link。
最后[defaults synchronize]在viewwilldisappear上强制调用,或者在存储新值后立即调用,无论你的实现方式如何。
希望这有帮助。
答案 1 :(得分:0)
前几天NSUserDefaults
不太确定导致它的原因,但这是由于Xcode中的一个错误。我能够在不改变代码的情况下解决问题。我只是清理了项目(CMD-Shift-K
)并重新启动了我的计算机,然后它运行得很好。值得一试
您是否在控制台中收到任何类型的错误消息?