如何保存自定义对象数组并将其存储在NSUserDefaults的 - iPhone [英] How to save custom objects in array and store it in NSUserDefaults - iPhone

查看:222
本文介绍了如何保存自定义对象数组并将其存储在NSUserDefaults的 - iPhone的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我之后按钮的操作方法让我的自定义类对象。现在我需要多个自定义对象存储在的NSMutableArray ,然后存储在该数组中 NSUserDefaults的

I am getting my custom class object after button action method. Now I need to store multiple custom objects in NSMutableArray and then store this array in NSUserDefaults.

下面是我的code:

-(IBAction)onClickSubmitLater:(id)sender
{
    //Saving store in user defaults for later upload data.

    NSMutableArray *arrayStoreList = [[NSMutableArray alloc] init];
    arrayStoreList = [Util getArrayPreference:@"Store"];//arrayStoreList is the list of all stores.

    Store *store = [[Store alloc] init];
    store = [arrayStoreList objectAtIndex:self.selectedStoreIndex];//here i am getting particular store that i need to save in array.

    //archive
    NSData *dataStore = [NSKeyedArchiver archivedDataWithRootObject:store];
    [[NSUserDefaults standardUserDefaults] setObject:dataStore forKey:@"resultStore"];

    //unarchive
    NSData *dataResultStore = [[NSUserDefaults standardUserDefaults] objectForKey:@"resultStore"];

    Store *resultStore = (Store *)[NSKeyedUnarchiver unarchiveObjectWithData:dataResultStore];
    NSLog(@"%@", resultStore);
}

以上$ C $下使用时,它是在 NSUserDefaults的保存单定制类商店对象。所以我想在其中保存的NSMutableArray 所有商店对象提交后IBAction为后。后来,我将通过一个在服务器都有一个上传存储读取存储阵列。

Using above code, it is saving single Custom class Store object in NSUserDefaults. So I would like to save all Store object in NSMutableArray after submit later ibaction. Later, I will fetch array of stores for uploading store on server one by one.

感谢。

推荐答案

要存储和检索与用户的默认值自定义对象的数组,你可以使用下面的方法:

To store and retrieve array with custom object on user defaults you can use following methods:

-(void)writeArrayWithCustomObjToUserDefaults:(NSString *)keyName withArray:(NSMutableArray *)myArray
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myArray];
    [defaults setObject:data forKey:keyName];
    [defaults synchronize];
}

-(NSArray *)readArrayWithCustomObjFromUserDefaults:(NSString*)keyName
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData *data = [defaults objectForKey:keyName];
    NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    [defaults synchronize];
    return myArray; 
}

但要确保你已经实施

But make sure you have implemented

- (void) encodeWithCoder : (NSCoder *)encode ;
- (id) initWithCoder : (NSCoder *)decode;

在数据模型类方法来避免碰撞为以下几个方面:

method in data model class to avoid crash as followings:

- (void)encodeWithCoder:(NSCoder *)coder;
{
    [coder encodeObject:label forKey:@"label"];
    [coder encodeInteger:numberID forKey:@"numberID"];
}

- (id)initWithCoder:(NSCoder *)coder;
{
    self = [super init];
    if (self != nil)
    {
        label = [[coder decodeObjectForKey:@"label"] retain];
        numberID = [[coder decodeIntegerForKey:@"numberID"] retain];
    }   
    return self;
}

这篇关于如何保存自定义对象数组并将其存储在NSUserDefaults的 - iPhone的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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