NSUserDefaults 、对象归档
NSUserDefaults
@interface Person : NSObject <NSCoding>
@property (nonatomic, assign) NSInteger ID;
@property (nonatomic, copy) NSString *name;
@end
// 存
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
[user setInteger:ID forKey:@”ID”];
[user setObject:name forKey:@”name”];
[user synchronize];
// 取
NSInteger uId = [[[NSUserDefaults standardUserDefaults] integerValueForKey:@”ID”];
NSString* name = [[NSUserDefaults standardUserDefaults] stringForKey:@”name”];
按对象存取
// 存
[user setObject:self forKey:@”user”];
[user synchronize];
// 取
User* u = [user objectForKey”@”user”];
2.对象归档
要使用对象归档,对象必须实现NSCoding协议.大部分Object C对象都符合NSCoding协议,也可以在自定义对象中实现NSCoding协议,要实现NSCoding协议,实现两个方法:
- (void) encodeWithCoder:(NSCoder *)encoder ;
-(void)initWithCoder:(NSCoder *)encoder.
同时,建议对象也同时实现NSCopying协议,该协议允许复制对象,要实现NSCopying协议须实现 -(id)copyWithZone:(NSZone *)zone 方法 。
@interface Person : NSObject <NSCoding>
@property (nonatomic, assign) NSInteger ID;
@property (nonatomic, copy) NSString *name;
@end
@implementation User
// 以下两个方法一定要实现,不然在调用的时候会crash
- (void)encodeWithCoder:(NSCoder *)aCoder;
{
// 这里放置需要持久化的属性
[aCoder encodeObject:[NSNumber numberWithInteger:self.ID] forKey:@”ID”];
[aCoder encodeObject:self.name forKey:@"name"];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [self init])
{
// 这里务必和encodeWithCoder方法里面的内容一致,不然会读不到数据
self.userID = [[aDecoder decodeObjectForKey:@"ID"] integerValue];
self.name = [aDecoder decodeObjectForKey:@"name"];
}
return self;
}
// 使用方法
+ (BOOL)save {
NSError *error = nil;
// 确定存储路径,一般是Document目录下的文件
NSString* fileName = [self getFileName];
NSString* filePath = [self getFilePath];
if (![[NSFileManager defaultManager] createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:&error]) {
NSLog(@”创建用户文件目录失败”);
return NO;
}
return [NSKeyedArchiver archiveRootObject:self toFile:[fileName:userId]];
}
@end
转载于:https://www.cnblogs.com/lhx2015/p/4635680.html
NSUserDefaults 、对象归档相关推荐
- 读写应用程序数据-NSUserDefault、对象归档(NSKeyedArchiver)、文件操作
ios中数据持久化存储方式一般有5种:NSUserDefault.对象归档(NSKeyedArchiver).文件操作.数据库存储(SQLite3).CoreData. 1.NSUserDefault ...
- IOS学习笔记二十三对象归档(NSKeyedArchiver、NSKeyedUnArchiver、NSCodeing)
1.NSKeyedArchiver.NSKeyedUnArchiver 1).archiveRootObject:toFile 归档对象到这个路径文件 2).unarchiveObjectWithFi ...
- c语言选择题库和解系,OC单个对象归档和解档关键类和方法名
// 文件归档(一) //需要参数(归档对象.归档路径) //参数设置 NSArray *array=@[ @"hello",@"world",@{@&quo ...
- objective-C 自定义对象归档的实现
自定义对象要实现归档必须实现NSCoding协议 NSCoding协议有两个方法,encodeWithCoder方法对对象的属性数据做编码处理,initWithCoder解码归档数据来初始化对象. # ...
- iOS NSUserDefaults 简介 NSUserDefaults 存储自定义对象
摘要 NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的是 ...
- IOS中将对象属性列表归档成一个plist文件中
归档步骤: 1.将一个NSDictionary对象归档到一个plist属性列表中 <1> 首先要将数据封装成字典: NSMutableDictionary * dict = [NSMuta ...
- ObjC学习11-复制对象与归档
感觉这两个概念有点朦胧,为了学习路线的完整性,这里浅浅地学习下,不懂的以后实践再去想懂~ 1.复制对象 Foundation类实现了名为copy和mutableCopy的方法 可以用这些方法来创建对象 ...
- iOS开发笔记(十七):持久化方案之 NSUserDefaults
对于应用来说,每个用户都有自己的独特偏好设置,而好的应用会让用户根据喜好选择合适的使用方式,把这些偏好记录在应用包的 plist 文件中,通过 NSUserDefaults 类来访问,这是 NSUse ...
- 四种数据持久化方式(上) :属性列表与归档解档
iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹. iOS开发中 ...
最新文章
- Python 将字符串转换成单个字符;将单个字符合并成字符串
- eclipse4.3.1标准版安装freemarker插件
- Oracle绑定变量和审计功能影响性能吗?Python告诉你
- python中遇到的问题及解决方法_自己编程中遇到的Python错误和解决方法汇总整理...
- redis 菜鸟教程
- 客服系统源代码下载-h5手机端在线客服代码-在线聊天系统源代码(前端vue开发,后台go语言开发)
- js书写原生ajax,JS 原生ajax写法
- 软件开发价格估算方法
- reflets 第零课 课文涉及内容介绍及翻译
- html的浮动跟标准流,网页布局的 标准流 浮动流 与 定位流
- 用turtle画奥运五环
- pythondjango教程_【秒懂】号称最为简明实用的Django上手教程
- Android开发知识(二十二)LayoutInflater装载xml布局过程的源码解析
- WAP.WXL.WMLScript备课笔记
- CCNA WAN IPv6
- linux c++读取excel文件的库
- 就想和你上#床能咋地?【ZT】送给没GF的兄弟们
- 上海智能网联创新实施计划:推动交通信号、视频监控等数据资源开放
- 全国计算机一级等级分布,全国计算机等级考试一级B题型分布、考核界面与相关操作.doc...
- IDEA个人常用设置及迅雷下载方式