您的位置:首页 > 产品设计 > UI/UE

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(@"不是第一次");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: