数据库iOS开发日志系统(iOS 文件存储)

iOS 中的文件存储

2016-09-02  本文已影响1070人  codeing小牛

1 NSKeydArchiver
1.1 基本类型 (NSString NSArray NSDictionary NSData NSSet NSNumber)可以直接进行归档和反归档(归档后用户不可以查看归档文件中的内容)

 NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    
 NSString *filepath = [path stringByAppendingPathComponent:@"filename"];
    
 NSNumber *num = @19 ;
 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:num];
 NSNumber *resultnum = [NSKeyedUnarchiver unarchiveObjectWithData:data];
 [NSKeyedArchiver archiveRootObject:num toFile:filepath];
 NSNumber *resultnum1 = [NSKeyedUnarchiver unarchiveObjectWithFile:filepath];
1.2/*若归档的对象为自定义对象 需要自定义的类遵守NSCoding 协议 同时实现两个方法 */
#import <Foundation/Foundation.h>
@interface CellModel : NSObject<NSCoding> // 遵守协议
/*在.m 文件中需要实现的方法*/
-(void)encodeWithCoder:(NSCoder *)aCoder{
   [aCoder encodeObject:self.MenuName forKey:@"MenuName"];
   [aCoder encodeInteger:self.Depth forKey:@"Depth"];
}
-(id)initWithCoder:(NSCoder *)aDecoder{
   if (self = [super init]) {
       self.MenuName = [aDecoder decodeObjectForKey:@"MenuName"];
       self.Depth    = [aDecoder decodeIntegerForKey:@"Depth"];
   }
   return self ;
}
/*实现对自定义对象的归档和反归档*/
NSData   *data = [NSKeyedArchiver archivedDataWithRootObject:model];
CellModel *mod = [NSKeyedUnarchiver unarchiveObjectWithData:data];

  /* 将对象归档到文件中  */
[NSKeyedArchiver archiveRootObject:model toFile:path];//返回值为bool类型
CellModel *mod = [NSKeyedUnarchiver unarchiveObjectWithFile:path];//返回值为id类型

 
/* 如果数组中存的是自定义对象 无法直接存入默认设置时 可以采用该方法进行存储*/
 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:_dataArr];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"custemMenu"];
/* 数据的读取*/
NSArray *menuarr = [NSKeyedUnarchiver unarchiveObjectWithData:data];

// 通过归档写入的文件无法再app外部打开 只能反归档来读取里面的内容

2 write 写入方式(默认存储为txt文件)
// 可以写入NSdata NSDictionary NSArray 类型的数据 file名没有后缀的话默认存储为txt文档,后缀为plist 只能存储字典和数组
每次写入新数据都会把原来的数据覆盖掉

BOOL bl1 = [data writeToFile:datapath atomically:YES];
NSData *resuldata = [NSData dataWithContentsOfFile:datapath];

NSDictionary *dic = @{@"name":@"laowang"};
BOOL bl2 = [dic writeToFile:datapath atomically:YES];
NSDictionary *resultdic = [[NSDictionary alloc]initWithContentsOfFile:datapath];

NSArray *array = @[@"小灰",@"小白",@"小黑"];
BOOL bl3 = [array writeToFile:datapath atomically:YES];
NSArray *resultarr = [[NSArray alloc]initWithContentsOfFile:datapath];

3 Sqlite

4 CoreData

1 程序中文件的存储位置 document library(caches preferece) temp

// document 用于存放需要备份的重要文件

// cache 用于存放缓存文件 (会定时清理)preference 存储用户偏好设置

// tmp 用于存放临时文件(应用被关闭时会被清除)

上一篇下一篇

猜你喜欢

热点阅读