无法从 NSUserDefaults 检索 NSMutableArray [英] Unable to retrieve NSMutableArray from NSUserDefaults

查看:70
本文介绍了无法从 NSUserDefaults 检索 NSMutableArray的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在本地存储中为包含 NSString 列表的 NSMutableArray 保留数据时遇到问题.当应用程序运行时,我有一个 save 方法和一个 get 方法似乎都可以工作.但是,一旦我关闭应用程序并重新启动数组中的项目就消失了.

I have an issue persisting data in local storage for an NSMutableArray containing a list of NSStrings. I have a save method and a get method both appear to work when the app is running. However, once I close the app and restart the items in the array are gone.

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];

推荐答案

您无法将可变数组存储到用户默认值.存储不可变副本并检索它并转换为可变副本以便在下次启动时访问.

Your can not store mutable array to user defaults. Store the immutable copy and retrieve that and convert to mutable ones to access during the next launch.

这篇关于无法从 NSUserDefaults 检索 NSMutableArray的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆