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 、对象归档相关推荐

  1. 读写应用程序数据-NSUserDefault、对象归档(NSKeyedArchiver)、文件操作

    ios中数据持久化存储方式一般有5种:NSUserDefault.对象归档(NSKeyedArchiver).文件操作.数据库存储(SQLite3).CoreData. 1.NSUserDefault ...

  2. IOS学习笔记二十三对象归档(NSKeyedArchiver、NSKeyedUnArchiver、NSCodeing)

    1.NSKeyedArchiver.NSKeyedUnArchiver 1).archiveRootObject:toFile 归档对象到这个路径文件 2).unarchiveObjectWithFi ...

  3. c语言选择题库和解系,OC单个对象归档和解档关键类和方法名

    //  文件归档(一) //需要参数(归档对象.归档路径) //参数设置 NSArray *array=@[ @"hello",@"world",@{@&quo ...

  4. objective-C 自定义对象归档的实现

    自定义对象要实现归档必须实现NSCoding协议 NSCoding协议有两个方法,encodeWithCoder方法对对象的属性数据做编码处理,initWithCoder解码归档数据来初始化对象. # ...

  5. iOS NSUserDefaults 简介 NSUserDefaults 存储自定义对象

    摘要 NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的是 ...

  6. IOS中将对象属性列表归档成一个plist文件中

    归档步骤: 1.将一个NSDictionary对象归档到一个plist属性列表中 <1> 首先要将数据封装成字典: NSMutableDictionary * dict = [NSMuta ...

  7. ObjC学习11-复制对象与归档

    感觉这两个概念有点朦胧,为了学习路线的完整性,这里浅浅地学习下,不懂的以后实践再去想懂~ 1.复制对象 Foundation类实现了名为copy和mutableCopy的方法 可以用这些方法来创建对象 ...

  8. iOS开发笔记(十七):持久化方案之 NSUserDefaults

    对于应用来说,每个用户都有自己的独特偏好设置,而好的应用会让用户根据喜好选择合适的使用方式,把这些偏好记录在应用包的 plist 文件中,通过 NSUserDefaults 类来访问,这是 NSUse ...

  9. 四种数据持久化方式(上) :属性列表与归档解档

    iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹. iOS开发中 ...

最新文章

  1. Python 将字符串转换成单个字符;将单个字符合并成字符串
  2. eclipse4.3.1标准版安装freemarker插件
  3. Oracle绑定变量和审计功能影响性能吗?Python告诉你
  4. python中遇到的问题及解决方法_自己编程中遇到的Python错误和解决方法汇总整理...
  5. redis 菜鸟教程
  6. 客服系统源代码下载-h5手机端在线客服代码-在线聊天系统源代码(前端vue开发,后台go语言开发)
  7. js书写原生ajax,JS 原生ajax写法
  8. 软件开发价格估算方法
  9. reflets 第零课 课文涉及内容介绍及翻译
  10. html的浮动跟标准流,网页布局的 标准流 浮动流 与 定位流
  11. 用turtle画奥运五环
  12. pythondjango教程_【秒懂】号称最为简明实用的Django上手教程
  13. Android开发知识(二十二)LayoutInflater装载xml布局过程的源码解析
  14. WAP.WXL.WMLScript备课笔记
  15. CCNA WAN IPv6
  16. linux c++读取excel文件的库
  17. 就想和你上#床能咋地?【ZT】送给没GF的兄弟们
  18. 上海智能网联创新实施计划:推动交通信号、视频监控等数据资源开放
  19. 全国计算机一级等级分布,全国计算机等级考试一级B题型分布、考核界面与相关操作.doc...
  20. IDEA个人常用设置及迅雷下载方式

热门文章

  1. Java中Spring Cloud Ribbon
  2. 登录Ubuntu提示有软件包可以更新
  3. 2019的第一工作日
  4. Mybatis经验总结
  5. 【MySQL数据库开发之三】MySQL 获得数据库和表操作!
  6. 完美解决wordpress邮件链接无效的问题
  7. CNN 模型框架(转)
  8. xxx is not in the sudoers file 解决方案(转)
  9. 将tomcat添加到系统服务
  10. Eclipse 工具栏不见了