iOS开发-数组本地存储, JSONModel本地储存实现

来源:互联网 发布:js上拉加载更多 编辑:程序博客网 时间:2024/06/06 12:37

一:数组本地化实现

    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];

     [UserDefaultHandlersaveUserDetault:datakey:kUserInfoData];

    //取数据,解码

    //    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



原创粉丝点击