本文主要是介绍从零开始学习iOS开发-股票记帐本1.0(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
4. 数据持久化
定义一个NsMutable *Data来存储数据,在这个App中使用属性文件进行数据持久话。具体的数据持久化代码如下
-(id)init{//当应用从storyboard中加在视图控制器时,uikit将会自动触发该方法if ((self=[super init])) {[self loadData];}return self;
}
#pragma mark 数据加载和保存
- (NSString *)documentsDirectory{NSArray *path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);//NSDocumentDirectory表明查找Documents目录的路径,NSUserDomainMask表明讲搜素限制在应用的沙盒内NSString *documentsDirectory=path[0];//每个应用只有一个Documents目录return documentsDirectory;
}- (NSString *)dataFilePath{//创建到plist的完整路径return [[self documentsDirectory]stringByAppendingPathComponent:@"data.plist"];
}- (void)saveData{NSMutableData *data=[[NSMutableData alloc]init];NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc]initForWritingWithMutableData:data];[archiver encodeObject:self.Data forKey:@"data"];//_局部变量,self属性[archiver finishEncoding];[data writeToFile:[self dataFilePath] atomically:YES];//获取sellData数组中的内容,然后分两步讲它转换成二进制数据块,然后写进到文件中,chapter13p5}
- (void) loadData{NSString *path=[self dataFilePath];//检查沙盒中是否存在该文件if ([[NSFileManager defaultManager]fileExistsAtPath:path]) {//当应用从沙河中找到path.plist文件时,我们无需创建一个新的数组,可以从该文件中加载整个数组和其中内容(savechecklistitem的逆向操作)NSData *data=[[NSData alloc]initWithContentsOfFile:path];//将文件内容加载到nsdata对象中NSKeyedUnarchiver *unarchiver=[[NSKeyedUnarchiver alloc]initForReadingWithData:data];//创建一个nskeyedunarchiver对象self.Data=[unarchiver decodeObjectForKey:@"data"];[unarchiver finishDecoding];}else{self.Data=[[NSMutableArray alloc]initWithCapacity:100];}
}
5. 数据的加载和保存
4中只负责数据的持久化,此外还需要对数据进行保存和加载,这个过程在stockData.h和.m文件中进行,一下罗列主要代码
.h文件
@interface stockData : NSObject<NSCoding>@property (strong, nonatomic) NSMutableArray *sellData;
.m文件
- (id)init{//当用户添加一个新的stockdata到应用中时会调用常规init方法if ((self=[super init])) {self.sellData=[[NSMutableArray alloc]initWithCapacity:20];}return self;
}- (id)initWithCoder:(NSCoder *)aDecoder{//加载if ((self=[super init])) {self.sellData=[aDecoder decodeObjectForKey:@"SellData"]; }return self;
}- (void)encodeWithCoder:(NSCoder *)aCoder{//保存[aCoder encodeObject:self.sellData forKey:@"SellData"];
}
这篇关于从零开始学习iOS开发-股票记帐本1.0(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!