一: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. Project interpreter not specified(eclipse+pydev) (转)

    [小记] 最近因为想配置Android的开发环境,把原来的MyEclipse5.5删了,下载了最新的Eclipse3.7版本,因为之前在进行Python开 发,就下载了最新的Pydev2.4版本,安装 ...

  2. sublime插件总汇

    本人用过多个编辑器(非IDE),发现sublime的样式非常帮,现在做个插件总汇 ChineseLocalzations      中文插件 Emmet                         ...

  3. JavaScript Output

    JS can "display" data in different ways: (1)Writing into an alert box, using window.alert( ...

  4. 按照grouip分组,之后分组调用生成正式凭证 的接口

    按照grouip分组,之后分组调用生成正式凭证 的接口 Map<String, List<OperatingLogVO>> resultMap = new HashMap< ...

  5. Android使用UncaughtExceptionHandler捕获全局异常

    Android系统的“程序异常退出”,给应用的用户体验造成不良影响.为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理.通过Thread.setDe ...

  6. 中国石油大学(华东)暑期集训--二进制(BZOJ5294)【线段树】

    问题 C: 二进制 时间限制: 1 Sec  内存限制: 128 MB提交: 8  解决: 2[提交] [状态] [讨论版] [命题人:] 题目描述 pupil发现对于一个十进制数,无论怎么将其的数字 ...

  7. JZYZOJ 1388 旅游 状压dp

    http://172.20.6.3/Problem_Show.asp?id=1388   求拓扑排序方案数 状压dp,最开始以为是拓扑排序加数论或者搜索,没想到是状压dp,突然气死.jpg: 完全没有 ...

  8. 【20181020T1】蛋糕

    题面 [正解] 显然先按a排个序,然后用b乱搞 第一问用D开头的定理求最长下降子序列 第二问乱搞 for (int i=1;i<=n;i++) { int* t=upper_bound(f+1, ...

  9. Gym - 101620I Intrinsic Interval

    题面在这里! 首先一个非常重要的性质是,两个好的区间的交依然是好的区间. 有了这个性质,我们只要找到包含某个区间的右端点最小的好区间,然后就是这个区间的答案拉. 至于找右端点最小的好区间就是一个扫描线 ...

  10. 【BFS】【并查集】【Tarjan】【LCA】Gym - 101173H - Hangar Hurdles

    给你一张地图,给你q次询问,每次问你从A点到B点,最大能移动多大的箱子. 把每个点所能容纳的最大箱子求出来(BFS,八连通,一开始将所有边界点和障碍点入队).然后从大到小排序.然后用并查集将相邻(四联 ...