• ios


    • "应用程序包": 这里面存放的是应用程序的源文件,包括资源文件和可执行文件。
    • 获取方式:
    NSString *path = [[NSBundle mainBundle] bundlePath];
    
    
    • Documents: iTunes会同步此文件夹中的内容,一般用来存储持久化的数据.
    
    NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
    
    
    • firstObject或者lastobject都可以,因为该目录下只有一个文件夹
    • Library/Caches: iTunes不会同步此文件夹,caches存储缓存的.library目录下另一个文件夹是 preference 偏好设置文件夹,通过获取偏好设置的单例,直接可以保存在偏好设置里面的.plist文件
    
    NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
    //偏好设置的单例
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
    //直接调用方法就能保存入偏好设置里面
    [userDefaults setObject:@"hello"forKey:@"hello"];
    //保存完以后一定记得同步synchronize更新一下.
    
    
    • 临时文件夹tmp: iTunes不会同步此文件夹,里面存的是临时文件,随时可以被删除,一般不怎么用
    
    NSString *path = NSTemporaryDirectory();
    
    
    

    比较常用的归档保存

    • 比如要归档一个对象或者model模型,则要归档的对象要遵守 协议
    • 在.m文件中实现归档,解档的协议方法
    //
    //  Person.m
    //  test
    //
    //  Created by 裴波波 on 16/4/8.
    //  Copyright © 2016年 裴波波. All rights reserved.
    //
    
    #import "Person.h"
    
    @implementation Person
    
    
    //归档
    -(void)encodeWithCoder:(NSCoder *)aCoder{
    
        [aCoder encodeObject:self.name forKey:@"name"];
        [aCoder encodeObject:self.age forKey:@"age"];
        [aCoder encodeObject:self.hight forKey:@"hight"];
    }
    
    //解档
    -(instancetype)initWithCoder:(NSCoder *)aDecoder{
    
        if([super init]){
            self.name = [aDecoder decodeObjectForKey:@"name"];
            self.age = [aDecoder decodeObjectForKey:@"age"];
            self.hight = [aDecoder decodeObjectForKey:@"hight"];
        }
        return self;
    }
    
    @end
    
    
    
    • 上面是告诉编译器按照什么方式进行归档.
    • 如何调用HOW??
    
    //获取要保存文件的路径.并创建对应的文件,文件的后缀,越复杂越好,因为别人拿到后不会发现里面有什么
    NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"peibobo.bobo"];
    
    //第二步---归档----------------------per要归档的对象---filePath要归档到的文件
    [NSKeyedArchiver archiveRootObject:per toFile:filePath];
    
    
    
    • 解档
    //一样获取文件
    NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"peibobo.bobo"];
    
    //调用方法
    Person *per = [NSKeyedUnarchiver unarchiveObjectWithFile:file];
    
    

    注意点:

    * 要归档对象要遵守NSCoding协议,实现归档解档方法.

    * 获取保存的文件,要保存文件的路径

    * 调用两个方法一个进行归档,一个进行解档.

  • 相关阅读:
    《我是一只IT小小鸟》
    实现对字符串的反转输出与句子的反转输出
    7.13学习记录
    CentOS 7 不能连接网路的解决方法
    Xshell连接linux服务器不成功的乌龙问题
    Python基础(二)数据类型
    Python基础(一)
    UML精粹3
    UML精粹2
    UML精粹1
  • 原文地址:https://www.cnblogs.com/adampei-bobo/p/5370015.html
Copyright © 2020-2023  润新知