如何在NSUserDefaults中存储自定义对象 [英] how can store custom objects in NSUserDefaults

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

问题描述

我为重复的问题致歉.我是ios新手.我想将自定义对象存储在userdefaults中.我正在使用Objective-C.

I apologize for duplicate Question . I am new in ios . I want to store custom objects in userdefaults. I am using objective-c .

预先感谢

推荐答案

首先,您要像下面创建自定义类.

First you create custom class Like below.

CustomObject.h

CustomObject.h

#import <Foundation/Foundation.h>

@interface CustomObject : NSObject<NSCoding>

@property(strong,nonatomic)NSString *name;

@end 

CustomObject.m

CustomObject.m

#import "CustomObject.h"

@implementation CustomObject



- (void)encodeWithCoder:(NSCoder *)encoder {
    //Encode properties, other class variables, etc
    [encoder encodeObject:self.name forKey:@"name"];

}

- (id)initWithCoder:(NSCoder *)decoder {
    if((self = [super init])) {
        //decode properties, other class vars
        self.name = [decoder decodeObjectForKey:@"name"];

    }
    return self;
}

然后创建CustomObject类对象并存储在NSUserDefaults中

Then create CustomObject class object and store in NSUserDefaults

这样存储您的对象

CustomObject *object =[CustomObject new];
object.name = @"test";

NSMutableArray *arr = [[NSMutableArray alloc]init];
[arr  addObject:object];

NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:arr];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:encodedObject forKey:@"storeObject"];
[defaults synchronize];

像这样从NSUserDefaults获取自定义对象

get custom object from NSUserDefaults like this

 NSData *storedEncodedObject = [defaults objectForKey:@"storeObject"];
        NSArray *arrStoreObject = [NSKeyedUnarchiver unarchiveObjectWithData:storedEncodedObject];
        for (int i=0; i<arrStoreObject.count; i++)
        {
            CustomObject *storedObject = [arrStoreObject objectAtIndex:i];
            NSLog(@"%@",storedObject.name);

        }

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

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