[英]Unable to retrieve NSMutableArray from NSUserDefaults
我在将包含NSStrings列表的NSMutableArray的数据持久保存在本地存储中时遇到问题。 应用运行时,我有一个save方法和一个get方法都可以正常工作。 但是,一旦我关闭应用程序并重新启动,数组中的项目就消失了。
NSMutableArray*ImageTags;
获取数据
-(NSMutableArray*)GetDataNSMutableArray:(NSString*)ItemName
{
NSMutableArray *GetData = [[NSMutableArray alloc] init];
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingSavedArray = [currentDefaults objectForKey:ItemName];
if (dataRepresentingSavedArray != nil)
{
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
if (oldSavedArray != nil)
GetData = [[NSMutableArray alloc] initWithArray:oldSavedArray];
else
GetData = [[NSMutableArray alloc] init];
}
return GetData;
}
保存数据
-(void)SaveDataNSMutableArray:(NSString*)ItemName:(NSMutableArray*)Data
{
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:Data] forKey:ItemName];
}
如何添加项目
[ImageTags addObject:Control.titleLabel.text]
如何保存数组
[super SaveDataNSMutableArray:CVC_ImageURL:ImageTags];
如何检索数组
ImageTags = [super GetDataNSMutableArray:CVC_ImageURL];
NSUserDefaults总是返回不可变的实例。
无关:(Conventions表示methodNames应该始终以小写字母开头)。
[[NSUserDefaults standardUserDefaults] synchronize]
将所有内容从NSUserDefaults转储到持久性存储中
您不能将可变数组存储为用户默认值。 存储不可变的副本并进行检索,并转换为可变的副本以在下次启动时进行访问。
您可以在保存时进行同步:
-(void)SaveDataNSMutableArray:(NSString*)ItemName:(NSMutableArray*)Data
{
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:Data] forKey:ItemName];
[[NSUserDefaults standardUserDefaults] synchronize] //add this code of a line.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.