初级数据持久化

 

        往内存中存储分为简单对象存储和复杂对象的存储, 简单类型对象一般有字符串,数组,字典 Data ;复杂的对象为系统提供之外的类型 如Model类, 复杂数据存储原理 : 将类型的对象归档(序列化) NSData类型的对象,然后将NSData类型对象 进行存储.

        对硬盘进行管理的工具为NSFileManger, 主要进行文件管理;


        沙盒安全机制 ios的安全机制(防止别的应用程序调用自己应用程序里面的东西)


 1.文件夹 Bundel 主要存放 代码, 资源文件, 配置文件;

 特性: (1)在程序运行期间位只读 不能进行任何修改 (2)开发期间可以更改代码.

 2.文件夹 Documents

 特性: (1)大小限制(会自动上传云盘) (2) 一般存放数据库 (3)存放从应用程序安装到删除的东西;

 3.文件夹 library 分为(1)Caches(缓存) (2) preference(配置 偏好设置)

 文件夹Caches 特性(1)放图片缓存 (2) 网络数据(缓存)

 preference NSUSerDefaules 自动存放到文件夹中

 4.文件夹 Tmp (临时性文件夹), 数据用完就删  (如压缩包)



 1.字符串的存储以及读写方式; 

   获得library文件夹的地址    

    NSArray *array = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

    NSString *path = [array firstObject];

   创建文件夹名并拼接路径

    path = [NSString stringWithFormat:@"%@/hello.txt", path];

    NSString *str = @"str";

   根据路径写入文件夹

    [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];

   根据路径读写字符串内容

    NSString *str =      [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];


 2. 数组的存储及读写方式;

    NSArray *array = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

    NSString *path = [array firstObject];

    path = [NSString stringWithFormat:@"%@/bihao.txt", path];

    NSMutableArray *array1 = [NSMutableArray array]

    [array1 addObject:@"sd"];

    [array1 addObject:@"ji"];

    [array1 writeToFile:path atomically:YES];

    NSMutableArray *arr = [NSMutableArray arrayWithContentsOfFile:path1];


3. 字典的存储及读写方式
    NSArray *array1 = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

    NSString *path = [array1 firstObject];

    path = [NSString stringWithFormat:@"%@/2222", path];

    NSMutableDictionary *dic = [NSMutableDictionary dictionary];

    [dic setObject:@"nihao" forKey:@"000"];

    [dic writeToFile:path atomically:YES];

 

4.Data的存储及读写方式;

    NSArray *arr = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,          NSUserDomainMask, YES);

    NSString *path = [arr firstObject];

    path = [NSString stringWithFormat:@"%@/11111", path];

    NSData *data = [NSData dataWithContentsOfFile:path];

    将data 转化为 字符串

    NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    [str release];


  5.model类型的存储与读写

       首先遵循NSCoding协议归档(序列化)的协议; 将属性转化为NSData时会走

       然后将属性按照一定顺序进行归纳;

- (void)encodeWithCoder:(NSCoder *)aCoder

{

    [aCoder encodeObject:self.name forKey:@"name"];

    [aCoder encodeInteger:self.age forKey:@"age"];

}

   反归档(反序列化), NSData转换为model的时候将相对应的属性进行赋值;

- (id)initWithCoder:(NSCoder *)aDecoder

{

    self = [super init];

    if (self) {

        self.name = [aDecoder decodeObjectForKey:@"name"];

        self.age = [aDecoder decodeIntegerForKey:@"age"];

    }

    return self;

  }


 6.NSUserDefault 的使用

    获得对象;

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    [user setObject:@"uuu" forKey:@"name"];

    异步存储

    快速存储(同步)

    [user synchronize];

    取出方式

    NSUserDefaults *u = [NSUserDefaults standardUserDefaults];

    NSString *str = [u objectForKey:@"name"];

}



  7.文件管理 NSFileManager

    NSFileManager *file = [NSFileManager defaultManager];

    NSArray *array =  NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

    NSString *path = [array firstObject];

    path = [NSString stringWithFormat:@"%@/hello", path];

    判断文件是否存在;

    BOOL judge = [file fileExistsAtPath:path];

    if (judge == YES) {

     (管理代码)

    }

    else

    {

     (管理代码)

    }



8. 文件拷贝;

    (1)首先获得被拷贝文件的路径

    NSArray *array = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

    NSString *path = [array firstObject];

    path = [NSString stringWithFormat:@"%@/copy", path];

    NSString *str = @"hhh";

    [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];

    (2)获得要拷贝到的地方的地址;  

    NSArray *array2 = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

    NSString *path2 = [array2 firstObject];

    path2 = [NSString stringWithFormat:@"%@/NTM.txt", path2];

    (3)根据路径进行复制

    NSFileManager *file = [NSFileManager defaultManager];

    [file copyItemAtPath:path toPath:path2 error:nil];












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值