NSUserDefaults 保存自己定義對象
阿新 • • 發佈:2017-05-06
保存 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 保存自己定義對象