1. 程式人生 > >NSUserDefaults 保存自己定義對象

NSUserDefaults 保存自己定義對象

保存 copy fork interface con init user spa 網上

項目裏json返回的一個model須要保存下來,這個model是固定的沒必須去創建表,想到了NSUserDefaults來存儲,暫不考慮安全問題。

NSUserDefaults沒法直接存儲一個對象。在網上找到了方法。如今分享下。

首先要寫一個對象,詳細代碼例如以下:

.h文件

@interface CustomSerModel : NSObject
@property(nonatomic,retain)NSString *m_deptId;//部門編號
@property(nonatomic,retain)NSString *m_sort_key;//姓名首字母,用於分組排序
@property(nonatomic,retain)NSString *m_imgUrl;//頭像地址
@property(nonatomic,retain)NSString *m_imgKey;//頭像文件的key
@property(nonatomic,retain)NSString *m_signature;//個性簽名
@property(nonatomic,retain)NSString *m_name;//好友姓名
@property(nonatomic,retain)NSString *m_entUserId;//好友企業用戶編號
@property(nonatomic,retain)NSString *m_entId;//好友企業編號
@property(nonatomic,retain)NSString *m_address;//地址
@property(nonatomic,retain)NSString *m_mobilePh;//手機號碼
@property(nonatomic,retain)NSString *m_sex;//性別
@property(nonatomic,retain)NSString *m_shortPh;//集團短號
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;
+(BOOL) ParserJson:(NSString*)json withArray:(NSMutableArray *)array;
@end

.m文件

@implementation CustomSerModel
@synthesize m_deptId,m_sort_key,m_imgUrl,m_imgKey,m_signature,m_name,m_entUserId,m_entId,m_address,m_mobilePh,m_sex,m_shortPh;
-(void)dealloc
{
    [m_deptId release];
    [m_sort_key release];
    [m_imgUrl release];
    [m_imgKey release];
    [m_signature release];
    [m_name release];
    [m_entUserId release];
    [m_entId release];
    [m_address release];
    [m_mobilePh release];
    [m_sex release];
    [m_shortPh release];
    [super dealloc];
}
- (void) encodeWithCoder: (NSCoder *)coder
{
    [coder encodeObject:self.m_deptId forKey:@"DeptId"];
    [coder encodeObject:self.m_sort_key forKey:@"ImgKey"];
    [coder encodeObject:self.m_imgUrl forKey:@"ImgUrl"];
    [coder encodeObject:self.m_signature forKey:@"Signature"];
    [coder encodeObject:self.m_name forKey:@"Name"];
    [coder encodeObject:self.m_entId forKey:@"EntId"];
    [coder encodeObject:self.m_entUserId forKey:@"EntUserId"];
    [coder encodeObject:self.m_address forKey:@"Address"];
    [coder encodeObject:self.m_mobilePh forKey:@"MobilePh"];
    [coder encodeObject:self.m_sex forKey:@"Sex"];
    [coder encodeObject:self.m_shortPh forKey:@"ShortPh"];
}

- (id) initWithCoder: (NSCoder *) coder
{
    m_deptId = [[coder decodeObjectForKey:@"DeptId"]copy];
    m_imgKey = [[coder decodeObjectForKey:@"ImgKey"]copy];
    m_imgUrl = [[coder decodeObjectForKey:@"ImgUrl"]copy];
    m_signature = [[coder decodeObjectForKey:@"Signature"]copy];
    m_name = [[coder decodeObjectForKey:@"Name"]copy];
    m_entId = [[coder decodeObjectForKey:@"EntId"]copy];
    m_entUserId = [[coder decodeObjectForKey:@"EntUserId"]copy];
    m_address = [[coder decodeObjectForKey:@"Address"]copy];
    m_mobilePh = [[coder decodeObjectForKey:@"MobilePh"]copy];
    m_sex = [[coder decodeObjectForKey:@"Sex"]copy];
    m_shortPh = [[coder decodeObjectForKey:@"ShortPh"]copy];
    
    return self;
}
+(BOOL) ParserJson:(NSString*)json withArray:(NSMutableArray *)array
{
    //此處省略
    return TRUE;
}

@end

定義好對象後如今就是怎麽使用了,保存方法:

 NSMutableArray *arr = [[NSMutableArray alloc]init];
            [CustomSerModel ParserJson:json withArray:arr];
            NSData *encodemenulist = [NSKeyedArchiver archivedDataWithRootObject:arr];
            NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
            [defaults setObject:encodemenulist forKey:@"CustomList"];

獲取方法:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData *saveMenulistDaate = [defaults objectForKey:@"CustomList"];
    NSMutableArray *arr = (NSMutableArray *)[NSKeyedUnarchiver unarchiveObjectWithData:saveMenulistDaate];
完畢,感謝汗清提供的幫忙。

參考:http://zani.iteye.com/blog/1431239

http://blog.csdn.net/jianjianyuer/article/details/10112759

http://blog.sina.com.cn/s/blog_61e26bcb010115cm.html


NSUserDefaults 保存自己定義對象