IOS_UI_本地存储-复杂的对象写入本地
2015-09-10 16:45
381 查看
复杂对象写入需要建一个类
先建一个Boss的类
#import <Foundation/Foundation.h>
//如果让一个类的所有属性的值都可以移动到一起,方便写入磁盘.系统提供了一个协议:<NSCoding>
@interface Boss :
NSObject<NSCoding>
@property (nonatomic,retain)NSString *name;
@property (nonatomic,retain)NSString *gender;
@property (nonatomic,assign)NSInteger age;
@property (nonatomic,assign)NSInteger number;
@end
#import "Boss.h"
@implementation Boss
//两个必须实现的协议方法
- (void)encodeWithCoder:(NSCoder *)aCoder
{
//编码的方法 把不同数据写到一个地方
[aCoder encodeObject:self.name
forKey:@"name"];
[aCoder encodeObject:self.gender
forKey:@"gender"];
[aCoder encodeInteger:self.number
forKey:@"number"];
[aCoder encodeInteger:self.age
forKey:@"age"];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
//解码的方法 初始化方法作用是给创建的对象一个初始值
self = [super
init];
if (self) {
self.name = [aDecoder
decodeObjectForKey:@"name"];
self.gender = [aDecoder
decodeObjectForKey:@"gender"];
self.age = [aDecoder
decodeIntegerForKey:@"age"];
self.number = [aDecoder
decodeIntegerForKey:@"number"];
}
return
self;
}
- (void)dealloc
{
[_name release];
[_gender release];
[super dealloc];
}
@end
- (void)viewDidLoad {
[super
viewDidLoad];
//复杂对象写入本地
//新建一个boss类
Boss *boss = [[Boss
alloc]init];
boss.name = @"大魔王";
boss.gender =
@"未知";
boss.age = 1000;
boss.number =
1;
NSString *bossPath = [docPath
stringByAppendingPathComponent:@"boss.suibian"];
//归档类(把复杂对象的数据写入本地)
[NSKeyedArchiver
archiveRootObject:boss toFile:bossPath];
//反归档(按照路径读取数据写入本地)
Boss *newBoss = [NSKeyedUnarchiver
unarchiveObjectWithFile:bossPath];
NSLog(@"%@",newBoss.name);
NSLog(@"%@,%@",boss,newBoss);
[boss release];
//快速将一个简单对象写入本地
//单例: 一个应用程序的执行期间,只能创建出一个对象.
//对于一个单例,系统都会提供一个+号方法作为创建/获取对象的方法
//这个方法第一次使用会创建一个对象,之后使用都是直接获取这个对象
// [NSFileManager defaultManager]
// [UIApplication sharedApplication]
// [UIScreen mainScreen ]
// [NSOperationQueue mainQueue]
// [UIDevice currentDevice]
// [NSThread mainThread];
//存
[[NSUserDefaults
standardUserDefaults] setObject:@"qianqian"
forKey:@"saveName"];
// //把现有的更改同步到本地
[[NSUserDefaults
standardUserDefaults]synchronize];
//取
NSLog(@"%@",[[NSUserDefaults
standardUserDefaults]objectForKey:@"saveName"]);
NSUserDefaults *userDe = [NSUserDefaults
standardUserDefaults];
//取值
NSString *result = [userDe
objectForKey:@"firstTime"];
if (result ==
nil) {
NSLog(@"第一次");
[userDe setObject:@"suibian"
forKey:@"firstTime"];
[userDe synchronize];
}else{
NSLog(@"不是第一次");
}
}
先建一个Boss的类
#import <Foundation/Foundation.h>
//如果让一个类的所有属性的值都可以移动到一起,方便写入磁盘.系统提供了一个协议:<NSCoding>
@interface Boss :
NSObject<NSCoding>
@property (nonatomic,retain)NSString *name;
@property (nonatomic,retain)NSString *gender;
@property (nonatomic,assign)NSInteger age;
@property (nonatomic,assign)NSInteger number;
@end
#import "Boss.h"
@implementation Boss
//两个必须实现的协议方法
- (void)encodeWithCoder:(NSCoder *)aCoder
{
//编码的方法 把不同数据写到一个地方
[aCoder encodeObject:self.name
forKey:@"name"];
[aCoder encodeObject:self.gender
forKey:@"gender"];
[aCoder encodeInteger:self.number
forKey:@"number"];
[aCoder encodeInteger:self.age
forKey:@"age"];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
//解码的方法 初始化方法作用是给创建的对象一个初始值
self = [super
init];
if (self) {
self.name = [aDecoder
decodeObjectForKey:@"name"];
self.gender = [aDecoder
decodeObjectForKey:@"gender"];
self.age = [aDecoder
decodeIntegerForKey:@"age"];
self.number = [aDecoder
decodeIntegerForKey:@"number"];
}
return
self;
}
- (void)dealloc
{
[_name release];
[_gender release];
[super dealloc];
}
@end
- (void)viewDidLoad {
[super
viewDidLoad];
//复杂对象写入本地
//新建一个boss类
Boss *boss = [[Boss
alloc]init];
boss.name = @"大魔王";
boss.gender =
@"未知";
boss.age = 1000;
boss.number =
1;
NSString *bossPath = [docPath
stringByAppendingPathComponent:@"boss.suibian"];
//归档类(把复杂对象的数据写入本地)
[NSKeyedArchiver
archiveRootObject:boss toFile:bossPath];
//反归档(按照路径读取数据写入本地)
Boss *newBoss = [NSKeyedUnarchiver
unarchiveObjectWithFile:bossPath];
NSLog(@"%@",newBoss.name);
NSLog(@"%@,%@",boss,newBoss);
[boss release];
//快速将一个简单对象写入本地
//单例: 一个应用程序的执行期间,只能创建出一个对象.
//对于一个单例,系统都会提供一个+号方法作为创建/获取对象的方法
//这个方法第一次使用会创建一个对象,之后使用都是直接获取这个对象
// [NSFileManager defaultManager]
// [UIApplication sharedApplication]
// [UIScreen mainScreen ]
// [NSOperationQueue mainQueue]
// [UIDevice currentDevice]
// [NSThread mainThread];
//存
[[NSUserDefaults
standardUserDefaults] setObject:@"qianqian"
forKey:@"saveName"];
// //把现有的更改同步到本地
[[NSUserDefaults
standardUserDefaults]synchronize];
//取
NSLog(@"%@",[[NSUserDefaults
standardUserDefaults]objectForKey:@"saveName"]);
NSUserDefaults *userDe = [NSUserDefaults
standardUserDefaults];
//取值
NSString *result = [userDe
objectForKey:@"firstTime"];
if (result ==
nil) {
NSLog(@"第一次");
[userDe setObject:@"suibian"
forKey:@"firstTime"];
[userDe synchronize];
}else{
NSLog(@"不是第一次");
}
}
相关文章推荐
- StringBuilder 和 StringBuffer 区别
- POJ - 1679 The Unique MST(最小生成树是否唯一)
- 将微信获取的部门JSON字符串转换成EASY UI Tree能够绑定的JSON(JSONPath的使用)
- UIday1301:block复习
- IOS开发—事件处理,触摸事件,UITouch,UIEvent,响应者链条,手势识别
- hdu 2894 DeBruijin(暴力搜索 || 欧拉回路)
- arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
- 【hdoj1005】Number Sequence
- UIViewController所有系统方法调用生命周期
- 自动布局 UITableView 更新 tableViewHeaderView高度
- easyui之 combobox自动补全(多选)
- Android自定义View和控件之一-定制属于自己的UI
- measuerSpec学习 以及 解决scrollview listview 等合用冲突
- 编写UEFI标准应用程序工程模块小结
- Android-query使用(2)
- 使用 Storyboard Segue 实作 UIViewController 的切换
- iOS 在UILabel显示不同的字体和颜色
- HDU3450 Counting Sequences(树状数组+dp)
- C# 队列Queue
- UIButton设置为圆形按钮并增加边框