永久性保存

 沙盒的三种形式

1.tmp拼接

NSString *path= [NSString stringWithFormat:@"%@/tmp/file",NSHomeDirectory()];

 

2. Library拼接    

NSString * path = [NSString stringWithFormat:@"%@/Library/file",NSHomeDirectory()];

 

3. Documents   

NSString * path = [NSString stringWithFormat:@"%@/Documents/file",NSHomeDirectory()];

 

 

永久保存数据的方法

 

1.写入沙盒(此方法没有路径,所以看不到文件,但是可以拿到数据)

[[NSUserDefaults standardUserDefaultssetValue:self.passWord.text forKey:self.userName.text];

    //写入沙盒

[[NSUserDefaults standardUserDefaultssynchronize];

//读取沙盒的文件

[[NSUserDefaults standardUserDefaults]valueForKey:self.userName.text]];

 

 

2.对(对象)解档和归档

 

PATH(路径最好是沙盒路径,这样换一台电脑也不会出错)

//归档数据

[NSKeyedArchiver archiveRootObject: download.AllMessage toFile:PATH];

//解档数据

[NSKeyedUnarchiver unarchiveObjectWithFile:PATH];

 

注:在解归档一个对象时,一定要写,解档器和归档器;否则崩溃;还要遵循<NSCoding>协议

//归档器

-(void)encodeWithCoder:(NSCoder *)aCoder{

    [aCoder encodeObject:_title forKey:@"title"];

    [aCoder encodeObject:_buyPrice forKey:@"buy_price"];

    [aCoder encodeObject:_pic forKey:@"pic"];

    [aCoder encodeObject:_endDate forKey:@"end_date"];

}

//解档器

-(id)initWithCoder:(NSCoder *)aDecoder{

    if ([super init]) {

        _title=[aDecoder decodeObjectForKey:@"title"];

        _buyPrice=[aDecoder decodeObjectForKey:@"buy_price"];

        _pic=[aDecoder decodeObjectForKey:@"pic"];

        _endDate=[aDecoder decodeObjectForKey:@"end_date"];

    }

    return self;

}

(2)字符串, 数组, 字典有现成的方法进行归档:

(1).字符串归档:

  string writeToFile:<#(NSString *)#> atomically:<#(BOOL)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>

字符串解档:

NSString * str = [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>]

(2).数组和字典

归档:

 [NSKeyedArchiver archiveRootObject:<#(id)#> toFile:<#(NSString *)#>]

解档:

   (id)   = [NSKeyedUnarchiver unarchiveObjectWithFile:<#(NSString *)#>]

 

(3.)手动解档

正常的归档流程:

  

    NSMutableData * data = [[NSMutableData allocinit];

    

    NSKeyedArchiver * archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:<#(NSMutableData *)#>];

    

 

    [archiver encodeObject:<#(id)#>]

   

    [archiver encodeInt:<#(int)#> forKey:<#(NSString *)#>]

    

    [archiver finishEncoding]

    

    data writeToFile:<#(NSString *)#> atomically:<#(BOOL)#>

 

 

解档:

 

    NSData * data = [[NSData alloc] initWithContentsOfFile:<#(NSString *)#>];

    

    NSKeyedUnarchiver * unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:<#(NSData *)#>];

    

    [unarchiver decodeFloatForKey:<#(NSString *)#>]

    [unarchiver decodeIntForKey:<#(NSString *)#>]

    [unarchiver decodeObjectForKey:<#(NSString *)#>]

    

    

    [unarchiver finishDecoding];

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值