iOS 中的 NSUserDefaults 是随机消失和重新出现的



只是想知道是否有人遇到这个问题?

我目前正在使用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(并重新启动了我的计算机,然后它工作得很好。 值得一试

您是否在控制台中收到任何类型的错误消息?

最新更新