iOS 使用NSUserdefault 保存自定义的 对象
一:NSUserDefaults支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSData,NSArray,NSDictionary,BOOL类型;
二:可以把自定义的对象,转换为NSData来达到存储对象到NSUserDefaults的目的;
如代码:
1:model.h
#import <Foundation/Foundation.h> @interface ReplayModel : NSObject @property (nonatomic,strong)NSNumber *useTimes; //使用次数
@property (nonatomic,strong)NSDate *addDate; //添加日期
@property (nonatomic,strong)NSString *replayContent; //回复的模板内容; @end
2: model.m
#import "ReplayModel.h"
@implementation ReplayModel
- (void)encodeWithCoder:(NSCoder *)encoder {
//Encode properties, other class variables, etc
[encoder encodeObject:self.useTimes forKey:@"useTimes"];
[encoder encodeObject:self.addDate forKey:@"addDate"];
[encoder encodeObject:self.replayContent forKey:@"replayContent"];
}
- (id)initWithCoder:(NSCoder *)decoder {
if((self = [super init])) {
//decode properties, other class vars
self.useTimes = [decoder decodeObjectForKey:@"useTimes"];
self.addDate = [decoder decodeObjectForKey:@"addDate"];
self.replayContent = [decoder decodeObjectForKey:@"replayContent"];
}
return self;
}
@end
3: 使用,写入
ReplayModel *model = [pinCiDataArray objectAtIndex:theReplayIndex];
NSLog(@"%@ 次数 %d",model.replayContent,[model.useTimes intValue]);
model.useTimes = [NSNumber numberWithInt:[model.useTimes intValue]+];
NSLog(@"新次数 %d",[model.useTimes intValue]); [pinCiDataArray replaceObjectAtIndex:theReplayIndex withObject:model];
NSData *encodeData = [NSKeyedArchiver archivedDataWithRootObject:pinCiDataArray];
[[NSUserDefaults standardUserDefaults] setObject:encodeData forKey:kPiCiArrayData];
4:使用,读取
NSData *encodeObject = [[NSUserDefaults standardUserDefaults] objectForKey:kTimeArrayData];
NSMutableArray *tempTimeData = [NSKeyedUnarchiver unarchiveObjectWithData:encodeObject];
参考:http://stackoverflow.com/questions/2315948/how-to-store-custom-objects-in-nsuserdefaults
iOS 使用NSUserdefault 保存自定义的 对象的更多相关文章
- NSUserDefault 保存自定义对象
由于NSUserDefaults 不支持保存自定类,保存的对象需要实现NSCoding协议,不过自定的类型就算实现了NSCoding也不可以保存,可以通过以下方法实现: //h文件 #import & ...
- OC中保存自定义类型对象的持久化方法
OC中如果要将自定义类型的对象保存到文件中,必须进行以下三个条件: 想要把存放自定义类型的数组进行 持久化(就是将内存中的临时数据以文件<数据库等>的形式写到磁盘上)必须满足: 1. 自定 ...
- Map集合的遍历方式以及TreeMap集合保存自定义对象实现比较的Comparable和Comparator两种方式
Map集合的特点 1.Map集合中保存的都是键值对,键和值是一一对应的 2.一个映射不能包含重复的值 3.每个键最多只能映射到一个值上 Map接口和Collection接口的不同 Map是双列集合的根 ...
- iOS 自定义的对象类型的解档和归档
自定义的对象的解档和归档 如果想对自己自定义的类进行解档和归档的话 必须遵循一个协议:NSCoding Student.h 文件 #import <Foundation/Foundation.h ...
- iOS开发多线程篇—自定义NSOperation
iOS开发多线程篇—自定义NSOperation 一.实现一个简单的tableView显示效果 实现效果展示: 代码示例(使用以前在主控制器中进行业务处理的方式) 1.新建一个项目,让控制器继承自UI ...
- iOS 使用Keychain 保存 用户名和密码到 本地
iOS 使用Keychain 保存 用户名和密码到 本地 之前曾把一些简单的数据保存在了plist,文件,及NsuserDefault里面, 但是如果要保存密码之类的,保存在本地就很不安全了: 但是利 ...
- IOS 学习笔记 2015-04-08 OC-NSUserDefaults 持久化对象
NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的; NSUserDefaults被设计用来存储设备和应用的配置信息,它通过一个工厂方法返回默认的. ...
- 使用MD5完成自定义Person对象的加密过程
---恢复内容开始--- 首先:我们对自定义Person对象的加密过程所用的方法是归档写入文件的方法. 第一步:创建Person,继承于NSObject,然后在Person.h文件遵守NSCoding ...
- qsettings 保存自定义结构体(QVariant与自定义结构体相互转化)
参考博文:QVariant与自定义数据类型转换的方法. 这里摘取其关键内容: 1.将自定义数据类型使用Q_DECLARE_METATYPE宏进行声明,便于编译器识别. 2.在插入对象的时候,声明QVa ...
随机推荐
- [scrapy] scrapy 使用goose作为正文提取
import scrapy from goose import Goose class Article(scrapy.Item): title = scrapy.Field() text = scra ...
- 使用0填充string(构造类似‘00001’的字符串)
今天在对视频进行爬取的时候,发现url最后是000001,然后是000002,依次增加,而且每一个url请求只能得到一个分段了的视频,这种情况下构造url就成了一个问题. python有一个函数可以处 ...
- 最近公共祖先LCA(前置知识)
1.前言 最近公共祖先(Least Common Ancestors),简称LCA,是由Tarjan教授(对,又是他)提出的一种在有根树中,找出某两个结点u和v最近的公共祖先问题. 2.什么是最近公共 ...
- 解决在jqmobi框架上使用mobiscroll控件的bug问题
jqmobi(appframework)框架的好处主要是它很轻量级,用在手机上占用内存较小,实际表现较为流畅,这也是它区别于jQuery mobile的一大特色,上一篇博客中提供了在它上面使用日期控件 ...
- Funny Car Racing CSU - 1333 (spfa)
There is a funny car racing in a city with n junctions and m directed roads. The funny part is: each ...
- Spring事务传播性
事务是逻辑处理原子性的保证手段,通过使用事务控制,可以极大的避免出现逻辑处理失败导致的脏数据等问题.事务最重要的两个特性,是事务的传播级别和数据隔离级别.传播级别定义的是事务的控制范围,事务隔离级别定 ...
- 【状压dp】送餐员
[odevs2800]送餐员 题目描述 Description 有一个送外卖的,他手上有n份订单,他要把n份东西,分别送达n个不同的客户的手上.n个不同的客户分别在1~n个编号的城市中.送外卖的从0号 ...
- 【枚举+贪心】POJ2718-Smallest Difference
[题目大意] 按升序输出几个不同的数字,任意组成两个数字,输出最小的差值. [思路] 虽然是在穷竭搜索的章节里找到的题目,但是我觉得不需要穷竭搜索,枚举一下就可以了,0MS.分为一下三种情况: (1) ...
- React.js学习知识小结(一)
学习React也有半个月了吧,这里对所学的基础知识做个简单的总结.自己先是跟着官方文档学,差不多学了四五天,也跟着入门教程做了一个简单的小栗子.然后跟着阮一峰老师的教程上手了几个小Demo,后来在网上 ...
- Visual Studio Image Library现在带矢量图标了
Visual Studio Image Library是微软提供的一套不可多得的高质量图标库(Visual Studio中自己使用的),我在自己写的一些小程序中一直有用到它们.今天天想把之前的程序中的 ...