zoukankan      html  css  js  c++  java
  • 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协议,实现归档解档方法.

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

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

  • 相关阅读:
    POJ 2236 Wireless Network(并查集)
    POJ 2010 Moo University
    POJ 3614 Sunscreen(贪心,区间单点匹配)
    POJ 2184 Cow Exhibition(背包)
    POJ 1631 Bridging signals(LIS的等价表述)
    POJ 3181 Dollar Dayz(递推,两个long long)
    POJ 3046 Ant Counting(递推,和号优化)
    POJ 3280 Cheapest Palindrome(区间dp)
    POJ 3616 Milking Time(dp)
    POJ 2385 Apple Catching(01背包)
  • 原文地址:https://www.cnblogs.com/adampei-bobo/p/5370015.html
Copyright © 2011-2022 走看看