一:数组本地化实现
NSArray *array1 =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documents = [array1 lastObject];
NSString *documentPath = [documents stringByAppendingPathComponent:@"arrayXML.xml"];
// 准备好要存到本地的数组
NSArray *dataArray= [NSArray arrayWithArray:[responseobjectForKey:@"data"]];
//将数组存入到指定的本地文件
BOOLisyes = [dataArray writeToFile:documentPathatomically:YES];
//可对已经存储的数组进行查询等操作
NSArray *resultArray = [NSArray arrayWithContentsOfFile:documentPath];
NSLog(@"%@,isyes=%d", documentPath,isyes);
二:本地存储Model
- (void)saveUserInfo:(UserInfoModel *)userinfo {
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:userinfo];
[UserDefaultHandler saveUserDetault:datakey:kUserInfoData];
注意:UserDefaultHandler中方法如下:【//UserDefaultHandler.m
+(void)saveUserDetault:(id) object key:(NSString *)key{
[[NSUserDefaults standardUserDefaults] setValue:object forKey:key];
[[NSUserDefaults standardUserDefaults] synchronize];
}】
//取数据,解码
// NSData *data = [UserDefaultHandler getUserDetaultData:kUserInfoData];
// UserInfoModel *userinfo = [NSKeyedUnarchiver unarchiveObjectWithData:datas];
}
UserInfoModel.h
#import <JSONModel/JSONModel.h>
@class UserInfoModel;
@interface BPLoginResultModel :JSONModel
@property(nonatomic,strong)UserInfoModel<Optional> *UserInfo;
@end
@interface UserInfoModel : JSONModel<NSCoding>
@property (nonatomic,strong)NSString<Optional> *CardFaceNo;//卡面号
@property (nonatomic,strong)NSString<Optional> *VipName;//姓名
@end
UserInfoModel.m
#import "BPLoginResultModel.h"
@implementation BPLoginResultModel
@end
@implementation UserInfoModel
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.CardFaceNoforKey:@"CardFaceNo"];
[aCoder encodeObject:self.VipNameforKey:@"VipName"];
}
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
if (self = [superinit]) {
self.CardFaceNo = [aDecoderdecodeObjectForKey:@"CardFaceNo"];
self.VipName = [aDecoderdecodeObjectForKey:@"VipName"];
}
returnself;
}
@end
三:数组元素是model的数组本地存储
NSArray *array1 =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documents = [array1lastObject];
NSString *documentPath = [documentsstringByAppendingPathComponent:arrayName];
// 准备好要存到本地的数组
NSArray *dataArray= [NSArrayarrayWithArray:erpUserList];
// 将数组序列化后再存储
NSData *arrayData = [NSKeyedArchiverarchivedDataWithRootObject:dataArray];
BOOL isTureWrite = [arrayDatawriteToFile:documentPathatomically:YES];
// 取数据再反序列化
NSData *resultData = [NSDatadataWithContentsOfFile:documentPath];
NSArray *resultArray = [NSKeyedUnarchiverunarchiveObjectWithData:resultData];//将数据反序列化
其中model同二所属,需要实现方法- (void)encodeWithCoder:(NSCoder *)aCode。- (instancetype)initWithCoder:(NSCoder *)aDecoder