IOS_UI_本地存储-复杂的对象写入本地

来源:互联网 发布:淘宝 做工粗糙 有瑕疵 编辑:程序博客网 时间:2024/06/09 19:20

复杂对象写入需要建一个类

先建一个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.nameforKey:@"name"];

    [aCoder encodeObject:self.genderforKey:@"gender"];

    [aCoder encodeInteger:self.numberforKey:@"number"];

    [aCoder encodeInteger:self.ageforKey:@"age"];

    

}


- (id)initWithCoder:(NSCoder *)aDecoder

{

    //解码的方法 初始化方法作用是给创建的对象一个初始值

    self = [superinit];

    if (self) {

        self.name = [aDecoderdecodeObjectForKey:@"name"];

        self.gender = [aDecoderdecodeObjectForKey:@"gender"];

        self.age = [aDecoderdecodeIntegerForKey:@"age"];

        self.number = [aDecoderdecodeIntegerForKey:@"number"];

    }

    

    

    return self;

}

- (void)dealloc

{

    [_name release];

    [_gender release];

    [super dealloc];

}

@end


- (void)viewDidLoad {

    [superviewDidLoad];

 //复杂对象写入本地

    //新建一个boss类

    Boss *boss = [[Bossalloc]init];

    boss.name = @"大魔王";

    boss.gender = @"未知";

    boss.age = 1000;

    boss.number = 1;

    

    NSString *bossPath = [docPathstringByAppendingPathComponent:@"boss.suibian"];

    

    //归档类(把复杂对象的数据写入本地)

    [NSKeyedArchiver archiveRootObject:boss toFile:bossPath];

    //反归档(按照路径读取数据写入本地)

   Boss *newBoss = [NSKeyedUnarchiverunarchiveObjectWithFile:bossPath];

    NSLog(@"%@",newBoss.name);

    NSLog(@"%@,%@",boss,newBoss);

    

    [boss release];

    

    //快速将一个简单对象写入本地

    //单例: 一个应用程序的执行期间,只能创建出一个对象.

    //对于一个单例,系统都会提供一个+号方法作为创建/获取对象的方法

    //这个方法第一次使用会创建一个对象,之后使用都是直接获取这个对象

//    [NSFileManager defaultManager]

//    [UIApplication sharedApplication]

//    [UIScreen mainScreen ]

//    [NSOperationQueue mainQueue]

//    [UIDevice currentDevice]

//    [NSThread mainThread];

    //存

    [[NSUserDefaultsstandardUserDefaults] setObject:@"qianqian"forKey:@"saveName"];

//    //把现有的更改同步到本地

    [[NSUserDefaultsstandardUserDefaults]synchronize];

   //取

    NSLog(@"%@",[[NSUserDefaultsstandardUserDefaults]objectForKey:@"saveName"]);

    

    

    NSUserDefaults *userDe = [NSUserDefaultsstandardUserDefaults];

    //取值

    NSString *result = [userDe objectForKey:@"firstTime"];

    if (result == nil) {

        NSLog(@"第一次");

        [userDe setObject:@"suibian"forKey:@"firstTime"];

        [userDe synchronize];

    }else{

        NSLog(@"不是第一次");

    }

}



0 0
原创粉丝点击