gpt4 book ai didi

ios - 将NSMutableArray保存到NSUserDefaults

转载 作者:行者123 更新时间:2023-12-01 17:31:33 24 4
gpt4 key购买 nike

我的NSMutableArray内部有一个AppDelegate,我正尝试将其保存到NSUserDefaultsNSMutableArray(strainsfinal)包含收藏项的列表。我希望此列表保存,并且即使应用程序关闭然后重新启动也可以显示。有谁知道为什么我的代码不起作用(不保存我的数据)?见下文:

AppDelegate.m

-(void)updateStrains:(NSDictionary *)item
{
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataSave = [currentDefaults objectForKey:@"strains"];
if (strainsfinal != nil)
{
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataSave];
if (oldSavedArray != nil)
strainsfinal = [[NSMutableArray alloc] initWithArray:oldSavedArray];
else
strainsfinal = [[NSMutableArray alloc] init];
}

}

编辑:Appdelegate.m 因此,我将上面的方法更改为下面的方法(并且我认为它应该可以工作),但是应用程序崩溃,并说:“由于未捕获的异常'NSInvalidArguementException',正在终止应用程序,原因:'NSConcreteAttributedString initwithString:无'值'。

我想念什么?
-(void)updateStrains:(NSDictionary *)item {

NSData *dataSave = [NSKeyedArchiver archivedDataWithRootObject:strainsfinal];
[[NSUserDefaults standardUserDefaults] setObject:dataSave forKey:@"strains"];
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:@"arrayupdated" object:self userInfo:nil];
NSLog(@"updated strains %@",strainsfinal);
}

最佳答案

您必须添加

[currentDefaults synchronize];

每次将内容保存到userDefaults之后;

但是对于此类数据,最好使用.plist文件。
检查 documentation了解更多信息。

编辑代码:
-(void)updateStrains:(NSDictionary *)item {
NSData *dataSave = [NSKeyedArchiver archivedDataWithRootObject:item[@"strainsfinal"]];
[[NSUserDefaults standardUserDefaults] setObject:dataSave forKey:@"strains"];
// NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
// [nc postNotificationName:@"arrayupdated" object:self userInfo:nil];
NSLog(@"updated strains %@",strainsfinal);
[[NSUserDefaults standardUserDefaults] synchronize]; // this will save you UserDefaults
}

关于ios - 将NSMutableArray保存到NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20236845/

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