gpt4 book ai didi

ios - NSUserDefaults 在特定时间后清除其值

转载 作者:行者123 更新时间:2023-11-29 02:34:37 25 4
gpt4 key购买 nike

我使用 NSUserDefaults 保存我的字典如下:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dictionary];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"key"];
[[NSUserDefaults standardUserDefaults] synchronize];

// unarchive
NSData *newData = [[NSUserDefaults standardUserDefaults] objectForKey:@"key"];
NSDictionary *newDict = [NSKeyedUnarchiver unarchiveObjectWithData:data];

问题:字典包含一个名称值和一些其他值,但在特定时间段后(主要是 24 小时后),名称值给我“”(空白)值。

第一次遇到这种问题,帮我解决一下。
谢谢。

最佳答案

问题不在这段代码中。

1) 尝试检查您的应用程序是否在其他类/方法中包含 [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"key"]

2) 检查 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dictionary]; 是否在你写的时候不为空(也许它已经损坏,并删除已经写入的数据)。
要检查问题,您可以进行小版本控制并调试问题,这是代码。

    NSMutableArray *datas = [[[NSUserDefaults standardUserDefaults] objectForKey:@"datas"] mutableCopy];
if (!datas) {
datas = [NSMutableArray new];
}
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dictionary];
[datas addObject:data];
[[NSUserDefaults standardUserDefaults] setObject:datas forKey:@"datas"];
[[NSUserDefaults standardUserDefaults] synchronize];

// Debug code to see the result
NSLog(@"======= Logging saved datas");
for (NSData *data in datas) {
NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSLog(@"%@", dict);
}

此代码将允许您查看保存在 NSUserDefaults 中的所有字典版本,并且您可能会看到保存空数据的时刻。

关于ios - NSUserDefaults 在特定时间后清除其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26501909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com