标签:
- XML属性列表(plist)归档
- Preference(偏好设置)
- NSKeyedArchiver归档(NSCoding)
- SQLite3
- Core Data
沙盒根目录:NSString *home = NSHomeDirectory();
Documents:(2种方式)
-利用沙盒根目录拼接”Documents”字符串
NSString *home = NSHomeDirectory();
NSString *documents = [home stringByAppendingPathComponent:@"Documents"];
// 不建议采用,因为新版本的操作系统可能会修改目录名
- 利用NSSearchPathForDirectoriesInDomains函数
// NSUserDomainMask 代表从用户文件夹下找
// YES 代表展开路径中的波浪字符“~”
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO);
// 在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素
NSString *documents = [array objectAtIndex:0];
- 属性列表是一种XML格式的文件,拓展名为plist
- 如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,就可以使用writeToFile:atomically:方法直接将对象写到属性列表文件中
// directory:获取哪个文件夹 NSCachesDirectory,搜索caches文件
// domainMask:获取哪个范围下文件夹 NSUserDomainMask,表示在当前用户下去搜索
// expandTilde:是否展开全路径
// 存放在/Library/Caches下
//获取Caches文件夹的路径
NSString *cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
// 拼接文件路径
NSString *filePath =[cachesPath stringByAppendingPathComponent:@"user.plist"];
/* * 写入文件 */
[users writeToFile:filePath atomically:YES];
- 读取文件
/* * 读取文件 */
NSString *cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
NSString *path =[cachesPath stringByAppendingPathComponent:@"user.plist"];
NSArray *array =[NSArray arrayWithContentsOfFile:path];
NSLog(@"%@",array);
/* * NSUserDefaults用来专门做偏好设置存储*/
/* * 优点:不需要关心文件名,系统会自动创建 用来快速做键值对的存储*/
/* * 存放在 Library/Preferences 下 */
/* * 存储 */
[[NSUserDefaults standardUserDefaults]setObject:@"jack" forKey:@"account"];
[[NSUserDefaults standardUserDefaults]setObject:@"123" forKey:@"pwd"];
[[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"login"];
/* * 读取 */
NSString *account = [[NSUserDefaults standardUserDefaults]objectForKey:@"account"];
BOOL login = [[NSUserDefaults standardUserDefaults]objectForKey:@"login"];
NSString *pwd = [[NSUserDefaults standardUserDefaults]objectForKey:@"pwd"];
NSLog(@"%@,%d,%@",account,login,pwd );
#import <Foundation/Foundation.h>
/* * 注意别写成NSCopying */
@interface Person : NSObject<NSCoding>
/* * 年龄 */
@property (nonatomic,assign)NSInteger age;
/* * 名字 */
@property (nonatomic,strong)NSString *name;
/* * 解档属性 */
- (id)initWithCoder:(NSCoder *)aDecoder
{
#warning 只要父类遵守NSCodeing协议就会调用initWithCoder
/* * UIView在解析的时候就会调用initWithCoder 方法 */
if (self = [super init]) {
/* * 解档属性一定要保存到成员变量中 */
_age =[aDecoder decodeIntegerForKey:@"age"];
_name = [aDecoder decodeObjectForKey:@"name"];
}
return self;
}
/* * 告诉系统哪些对象需要归档 */
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:_name forKey:@"name"];
[aCoder encodeInteger:_age forKey:@"age"];
}
/* * 归档:自定义对象想要存储到沙盒(文件夹)必须使用归档 */
/* * 归档 */
Person *person =[[Person alloc]init];
person.age = 10;
person.name = @"adobe";
/* * 获取temp文件夹路径 */
NSString *temp =NSTemporaryDirectory();
/* * 读取document文件夹路径 */
NSString *documentPath =NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask,YES)[0] ;
/* * 拼接路径 */
NSString *filePath =[temp stringByAppendingPathComponent:@"person.plist"];
[NSKeyedArchiver archiveRootObject:person toFile:filePath];
/* * 解档 */
NSString *tempPath = NSTemporaryDirectory();
/* * 拼接路径 */
NSString *filePath = [tempPath stringByAppendingPathComponent:@"person.plist"];
Person *p =[NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
NSLog(@"%@,%ld",p.name,p.age);
标签:
原文地址:http://www.cnblogs.com/sg6548676/p/4637630.html