ios - 文件保存路径的获取
2016-04-08 21:20 菜鸟Alex 阅读(1216) 评论(0) 编辑 收藏 举报- "应用程序包": 这里面存放的是应用程序的源文件,包括资源文件和可执行文件。
- 获取方式:
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协议,实现归档解档方法.
* 获取保存的文件,要保存文件的路径
* 调用两个方法一个进行归档,一个进行解档.