转自http://zani.iteye.com/blog/1431239

.h文件

#import <Foundation/Foundation.h>

@interface MyObject : NSObject
{
NSNumber* lowValue;
NSNumber* highValue; NSString* titleString;
}
@property(nonatomic, retain)NSNumber* lowValue;
@property(nonatomic, retain)NSNumber* highValue; @property(nonatomic, retain)NSString* titleString;
@end

.m

#import "MyObject.h"

@implementation MyObject
@synthesize lowValue, highValue, titleString;
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:self.lowValue forKey:@"lowValue"];
[encoder encodeObject:self.highValue forKey:@"highValue"];
[encoder encodeObject:self.titleString forKey:@"titleString"];
}
- (id)initWithCoder:(NSCoder *)decoder
{
if(self = [super init])
{
self.lowValue = [decoder decodeObjectForKey:@"lowValue"];
self.highValue = [decoder decodeObjectForKey:@"highValue"];
self.titleString = [decoder decodeObjectForKey:@"titleString"];
}
return self;
} @end

保存单个MyObject方法:

- (void)saveCustomObject:(MyObject *)obj
{
NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:obj];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:myEncodedObject forKey:@"myEncodedObjectKey"];
}
- (MyObject *)loadCustomObjectWithKey:(NSString *)key
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *myEncodedObject = [defaults objectForKey:key];
MyObject *obj = (MyObject *)[NSKeyedUnarchiver unarchiveObjectWithData: myEncodedObject];
return obj;
} 保存:
MyObject* testObj = [[MyObject alloc] init];
testObj.lowValue =[NSNumber numberWithFloat:122.2 ];
testObj.highValue = [NSNumber numberWithFloat: ];
testObj.titleString = @“baoyu”; 读取:
MyObject* obj = [self loadCustomObjectWithKey:@"myEncodedObjectKey"];
NSLog(@"%f, %f, %@", [obj.lowValue floatValue], [obj.highValue floatValue], obj.titleString);

保存多个MyObject方法:

保存:
NSMutableArray* array = [[NSMutableArray alloc] init];
for(int i=; i<; i++)
{
MyObject* testObj = [[MyObject alloc] init];
testObj.lowValue =[NSNumber numberWithFloat:122.2+i ];
testObj.highValue = [NSNumber numberWithFloat:+i ];
testObj.titleString = [NSString stringWithFormat:@"BAOYU%d", i]; [array addObject:testObj]; }
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:array] forKey:@"myarray"]; 读取:
NSData* data = [[NSUserDefaults standardUserDefaults] objectForKey:@"myarray"]; NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
for(MyObject* obj in oldSavedArray)
{
NSLog(@"%f, %f, %@", [obj.lowValue floatValue], [obj.highValue floatValue], obj.titleString);
}

使用NSUserDefaults保存自定义对象(转)的更多相关文章

  1. NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象

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

  2. NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象 - lady-奕奕的个人空间 - 开源中国社区

    一.了解NSUserDefaults以及它可以直接存储的类型 NSUserDefaults是一个,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一个前 ...

  3. 转-NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象

    转自:http://my.oschina.net/u/1245365/blog/294449 摘要 NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密 ...

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

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

  5. NSUserDefault 保存自定义对象

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

  6. NSUserDefaults存储自定义对象

    场景是这样的: 现在有一个数组如下,数组中存放着自定义的对象GoodscCategory <__NSArrayM 0x7ffb9c2032b0>( <GoodscCategory: ...

  7. 使用 NSUserDefaults 读取和写入自定义对象

    众所周知,NSUserDefaults只能保存诸如NSArray.NSDictionary.NSData.NSNumber等基本数据类型,如果我们强制保存自定义的类,就会出现这个错误:Attempt ...

  8. IOS 如何持久化自定义对象 2014-08-01 01:38

    如果持久话自定义对象 那么这个对象一定要遵循 NSCoding 协议 并实现编解码:然后再将编解码后的数据 NSKeyedArchiver 到NSData中   @interface NSKeyAnd ...

  9. Sqlite 存储自定义对象

    在iOS中如果想保存自定义对象,要让自定义对象实现NSCoding接口并实现方法-(id)initWithCoder:(NSCoder *)coder和-(void)encodeWithCoder:( ...

随机推荐

  1. 爬虫基本库之beautifulsoup

    一.beautifulsoup的简单使用 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...

  2. css字体样式

    css字体样式(Font Style) 属性       css文本样式 序号 中文说明 标记语法 1 字体样式 {font:font-style font-variant font-weight f ...

  3. highcharts基本介绍

    转自:http://www.cnblogs.com/jyh317/p/4189773.html 一.highcharts简介 Highcharts是一款纯javascript编写的图表库,能够很简单便 ...

  4. 流量分析系统---flume(测试flume+kafka)

    1.在flume官方网站下载最新的flume     wget http://124.205.69.169/files/A1540000011ED5DB/mirror.bit.edu.cn/apach ...

  5. range精讲

    var ec = range.endContainer endContainer不是一个引用类型 range是引用类型 range经过改变范围之后 var ec2 =range.endContaine ...

  6. iOS 绘制漂亮的折线图

    效果图是这样的: 关键是在 基本策略 是描点 和 连线. 折线基础版本,我找到网上的第三方,UUChart . 特点是朴素,简单,扩展性强. 效果图重点是在折线要有阴影,于是 重点 放在 折线发散的阴 ...

  7. pdoModel封装

    <?php /** * Created by PhpStorm. * User: Administrator * Date: 2017/7/24 * Time: 14:03 */ /** * 数 ...

  8. 【TopCoder】SRM152 DIV2总结

    为什么平常刷的时候感觉还不错,比赛的时候只能做出来一道题=.= 250分题:大水题,根据题目规则把一个字符串翻译成数字,直接代码:GitHub 我是通过遍历一个个数出来的,看到大神的解法是把字符用‘- ...

  9. CSS3 3D折叠展开动画菜单

    在线演示 本地下载

  10. 《网络对抗》 逆向及Bof基础实践

    <网络对抗>-逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数, ...