一: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 保存自定义的 对象的更多相关文章

  1. NSUserDefault 保存自定义对象

    由于NSUserDefaults 不支持保存自定类,保存的对象需要实现NSCoding协议,不过自定的类型就算实现了NSCoding也不可以保存,可以通过以下方法实现: //h文件 #import & ...

  2. OC中保存自定义类型对象的持久化方法

    OC中如果要将自定义类型的对象保存到文件中,必须进行以下三个条件: 想要把存放自定义类型的数组进行 持久化(就是将内存中的临时数据以文件<数据库等>的形式写到磁盘上)必须满足: 1. 自定 ...

  3. Map集合的遍历方式以及TreeMap集合保存自定义对象实现比较的Comparable和Comparator两种方式

    Map集合的特点 1.Map集合中保存的都是键值对,键和值是一一对应的 2.一个映射不能包含重复的值 3.每个键最多只能映射到一个值上 Map接口和Collection接口的不同 Map是双列集合的根 ...

  4. iOS 自定义的对象类型的解档和归档

    自定义的对象的解档和归档 如果想对自己自定义的类进行解档和归档的话 必须遵循一个协议:NSCoding Student.h 文件 #import <Foundation/Foundation.h ...

  5. iOS开发多线程篇—自定义NSOperation

    iOS开发多线程篇—自定义NSOperation 一.实现一个简单的tableView显示效果 实现效果展示: 代码示例(使用以前在主控制器中进行业务处理的方式) 1.新建一个项目,让控制器继承自UI ...

  6. iOS 使用Keychain 保存 用户名和密码到 本地

    iOS 使用Keychain 保存 用户名和密码到 本地 之前曾把一些简单的数据保存在了plist,文件,及NsuserDefault里面, 但是如果要保存密码之类的,保存在本地就很不安全了: 但是利 ...

  7. IOS 学习笔记 2015-04-08 OC-NSUserDefaults 持久化对象

    NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的; NSUserDefaults被设计用来存储设备和应用的配置信息,它通过一个工厂方法返回默认的. ...

  8. 使用MD5完成自定义Person对象的加密过程

    ---恢复内容开始--- 首先:我们对自定义Person对象的加密过程所用的方法是归档写入文件的方法. 第一步:创建Person,继承于NSObject,然后在Person.h文件遵守NSCoding ...

  9. qsettings 保存自定义结构体(QVariant与自定义结构体相互转化)

    参考博文:QVariant与自定义数据类型转换的方法. 这里摘取其关键内容: 1.将自定义数据类型使用Q_DECLARE_METATYPE宏进行声明,便于编译器识别. 2.在插入对象的时候,声明QVa ...

随机推荐

  1. struts2核心配置之Result

    result作用:在struts.xml中,使用<result>元素配置result逻辑视图和物理视图之间的映射 元素属性 属性 说明 是否必须 name 指定逻辑视图的名称(Action ...

  2. Struts2中使用Session

    嗯,没错,过了这么长时间我还在做我的注册和登录. 登陆的部分自然是从数据库中查找响应的用户信息,然后把一个user放到session里, Action中代码如下: public String Logi ...

  3. Codeforces Round #426 (Div. 2) D The Bakery(线段树 DP)

     The Bakery time limit per test 2.5 seconds memory limit per test 256 megabytes input standard input ...

  4. 初生牛犊:Windows下Anti-sandboxes技术探究

    由于云端杀毒的流行,病毒基本上都会加上anti-sandboxes手段来躲避沙箱的探测,在这点上,由于一些原因,最近也一直在做这一块,所以算是总结一下吧. 一:什么是沙箱以及其他: 根据受控环境中的观 ...

  5. Express使用MongoDB常用操作

    const MongoClient = require('mongodb').MongoClient const url = "mongodb://localhost:27017" ...

  6. java.lang.NegativeArraySizeException

    两台android设备发送图片. 发送端: Socket socket = null; try { socket = new Socket(ip, 8888); byte[] bytes = Scre ...

  7. [BZOJ4246]两个人的星座(计算几何)

    4246: 两个人的星座 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 101  Solved: 55[Submit][Status][Discuss ...

  8. [UOJ336]无限之环

    题目的要求就是每个接头都有且仅有一个与其相连的接头,所以不妨给每个接头$1$的流量,对整个网格图黑白染色后(源点$\mathop\rightarrow\limits^\infty$黑点,白点$\mat ...

  9. 【强联通分量缩点】【Tarjan】bzoj1051 [HAOI2006]受欢迎的牛

    就是看是否有一些点,从其他任何点出发都可到达 定理:有向无环图中唯一出度为0的点,一定可以由任何点出发均可达. 所以缩点,若出度为零的点(强联通分量)唯一,则答案为该强联通分量中点的度数. 若不唯一, ...

  10. JAVA EE 项目常用知识 之AJAX技术实现select下拉列表联动的两种用法(让你真正理解ajax)

    ajax 下拉列表联动的用法. ajax的定义: AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的 ...