只是想知道是否有人遇到这个问题?
我目前正在使用Objective-C在iOS中开发一个应用程序。有时,编译应用程序后,我在NSUserDefaults
中的数据会丢失。
但是,如果我忽略它并再次重新编译应用程序,数据会突然重新出现。
我已经在几个地方同步了(不是在每个键中,而只是在几个地方(。
如果有人碰巧遇到这个问题之前,我希望你能分享如何处理这个问题。
附言我需要一个存储来保存 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 中,如果它只是随机消失,也许它并不奇怪,但如果我重新编译应用程序,它也会在消失后再次收获
检查您的默认值是否仅使用字符串值或布尔值等。
如果您使用任何带有类(键和参数(的对象(如 NSObject(来存储在默认值中,我更喜欢您在存储和检索值之前进行相应的编码和解码。
此外,如果您存储任何 NSDictionary 检查该字典中的任何对象值是否不是布尔值、字符串以外的任何对象值,如果还存储了任何 NSObject 类或引用,那么您可能会遇到同样的问题。
请参阅此堆栈溢出链接,了解如何在存储到 NSUserDefaults 之前对对象进行编码。
最后 [默认同步] 调用强制在 view将消失或存储新值后立即调用,无论哪种方式是您的实现方式。
希望这有帮助。
前几天我在NSUserDefaults
遇到了类似的问题
不太确定是什么原因造成的,但这是由于 Xcode 中的一个错误。我能够在不更改代码的情况下解决问题。我只是清理了项目(CMD-Shift-K
(并重新启动了我的计算机,然后它工作得很好。 值得一试
您是否在控制台中收到任何类型的错误消息?