四种保存数据的方法

来源:互联网 发布:讯龙恢复软件注册码 编辑:程序博客网 时间:2024/06/05 09:24
一、<span style="color:#ff0000;">NSKeyedArchiver</span>:采用归档的形式保存数据,该数据对象必须得遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder方法,前<span style="white-space:pre"></span>   一个方法告诉系统怎么对对象进行编码,后一个对象则是告诉系统如何对队形进行解码:例子如下
首先是Person类
#import <UIKit/UIKit.h>@interface Person : UIView<NSCoding>@property (nonatomic,assign) int age;@property (nonatomic,copy)   NSString *name;@property (nonatomic,assign) float height;@end
#import "Person.h"@implementation Person#pragma mark 写入文件-(void)encodeWithCoder:(NSCoder *)aCoder{    [super encodeWithCoder:aCoder];//-----------不要忘记加这个    [aCoder encodeInt:self.age forKey:@"age"];    [aCoder encodeObject:self.name forKey:@"name"];    [aCoder encodeFloat:self.height forKey:@"height"];}#pragma mark 从文件中读取-(id)initWithCoder:(NSCoder *)aDecoder{    self = [super initWithCoder:aDecoder];//-----不要忘记加这个    self.age = [aDecoder decodeIntForKey:@"age"];    self.name = [aDecoder decodeObjectForKey:@"name"];    self.height = [aDecoder decodeFloatForKey:@"height"];    return self;}-(NSString *)description{    return [NSString stringWithFormat:@"name = %@,age = %d,height = %f",self.name,self.age,self.height];}@end

然后是ViewController
#import "ViewController.h"#import "Person.h"#define PERSON @"person1"@implementation ViewController-(void)viewDidLoad{    [super viewDidLoad];    [self createPerson];    [self readPerson];}-(void)createPerson{    Person *p = [[Person alloc]init];    p.age = 20;    p.name = @"Rio";    p.height = 1.75;        //获得Document路径    NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];    NSString *path = [documents stringByAppendingPathComponent:PERSON];        [NSKeyedArchiver archiveRootObject:p toFile:path];}-(void)readPerson{    NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];    NSString *path = [documents stringByAppendingPathComponent:PERSON];    Person *p = [NSKeyedUnarchiver unarchiveObjectWithFile:path];    NSLog(@"person:%@",p);}@end
</pre><pre name="code" class="objc">
二、NSUserDefaults:用来保存应用程序设置和属性以及用户保存的数据,用户再次打开应用程序之后这些数据仍然存在。可以存储的类型包括:NSData、NSDate、NSString、NSNumber、NSArray、NSDictionary。如要存储其他类型数据,在需要转换为前面的类型,才能用NSUserDefaults存储,具体实现方法在下面


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信上买东西发的货不一样怎么办 微信买东西收到货不付款怎么办 京东商品店家待出库不发货怎么办 微信二维码付款多付了怎么办 微信二维码付款付错了怎么办 身份证被移动公司拉黑了怎么办 微店申请退款卖家不同意怎么办 淘宝退货快递把我名字填错了怎么办 刚申请淘宝店信用为零怎么办 淘宝买家已付款卖家不做皮单怎么办 淘宝店铺被屏蔽7天后该怎么办 香信得登录密码忘了怎么办 苹果手机迅雷下载不了的资源怎么办 快手官方私信你的作品违规了怎么办 顺丰生鲜速配食物坏了怎么办 半年汽车没有年检 交警抓到怎么办 没年检的车子被交警抓到怎么办 去年检的路上被交警抓了怎么办 微信聊天界面群聊删除找不到怎么办 微博抽奖的奖品没发货怎么办 两个微信号绑了一个手机号怎么办 欧月玫瑰花朵叶子上有白粉怎么办 进对方空间被挡不想让他知道怎么办 qq上买东西给钱了对方没给怎么办 微信钱包手势密码忘记了怎么办 买家一起拍了两件宝贝怎么办 宿雾航空付款无法显示验证码怎么办 不小心把购物车的东西删了怎么办 微信在别人电脑登录忘退出怎么办 微信电脑版忘了退出怎么办 给微商交了定金不给退怎么办 方舟手游飞龙驯服时间不够怎么办 淘宝上买了假货找不到商家怎么办 魅蓝手机一直在开机画面怎么办 在实体店买的手机想退怎么办 淘宝买了东西发货了不想要了怎么办 快递已经发货了不想要了怎么办 锤子手机买了不到十天碎屏了怎么办 唯品会新人专享优惠卷过期了怎么办 我微信被系统说赌博登陆不起怎么办 平湖新居民积分卡怎么办办好办吗