NSUserDefault

</pre><pre name="code" class="objc"><pre name="code" class="objc">//    NSUserDefaults类提供了一个与默认系统进行交互的编程接口,
//    NSUserDefaults对象是用来保存,恢复应用程序相关的偏好设置,配置数据等。
//    默认系统允许应用程序自定义它的行为去迎合用户的喜好,
//    可以在程序运行的时候从用户默认的数据库中读取程序的设置,比如主题偏好设置等
//    同时NSUserDefaults的缓存避免了在每次读取数据时候都打开用户默认数据库的操作,可以通过调用synchronize方法来使内存中的缓存与用户默认系统进行同步。
//    一个NSUserDefaults类的对象必须是属性表
//我们可以存储NSData NSString NSNumber NSDate NSArray NSDictionary 这些实例
// 如果我们想存储其他类型的对象,需要归档并创建一个NSData来实现存储。
   
    // 1. 存储
    /*
    NSString *password = @"helloworld";
    [[NSUserDefaults standardUserDefaults] setObject:password forKey:@"password"];
    [[NSUserDefaults standardUserDefaults] synchronize];
     */
    // 2. 获取
//    NSString *password = [[NSUserDefaults standardUserDefaults] objectForKey:@"password"];
//    NSLog(@"password : %@",password);
//    2015-08-26 13:32:35.027 NSUserDefault[7986:303] password : helloworld
    
//     ----
//     从上面的例子得到了结论,只需要将需要存储的数据给NSUserDefaults 然后调用同步方法,再次启动程序,就可以获取NSUserDefaults的数据。
    
    
    
//    使用 NSUserDefaults 存储自定义对象
    // Student ,我们需要将Student类型变为NSData类型 就必须实现归档 自定义对象实现归档必须遵循NSCoding协议。
    
//    Student *student = [[Student alloc] init];
//    student.name = @"Charles";
//    student.studentNumber = @"12110501007";
//    student.sex = @"man";
//    // 归档方法
    + (NSData *)archivedDataWithRootObject:(id)rootObject;
//    // 1. 存储
//    /*
//     NSData *data = [NSKeyedArchiver archivedDataWithRootObject:student];
//    [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"studentData"];
//    [[NSUserDefaults standardUserDefaults] synchronize];
//     */
    
     // 解档方法
//      + (id)unarchiveObjectWithData:(NSData *)data;
//    //  2. 获取
//    id obj = [[NSUserDefaults standardUserDefaults] objectForKey:@"studentData"];
//    // 我们打印一下这时候获取的真实类型是什么?
//    NSLog(@"obj : %@",NSStringFromClass([obj class]));
     obj : __NSCFData
    我们需要解归档。 将NSData数据转化为 student对象
//   Student *getStudent =  [NSKeyedUnarchiver unarchiveObjectWithData:obj];
//    NSLog(@"getStudent : %@",getStudent);
    getStudent : name :Charles studentNumber :12110501007 sex :man
    

    
    
    // 归档解档
    NSArray *array = @[@"1",@"2"];
    
    NSMutableData *mulData = [NSMutableData data];
    NSKeyedArchiver *keyedArchiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:mulData];
   
    [keyedArchiver encodeObject:array forKey:@"array"];
    [keyedArchiver finishEncoding];
    [mulData writeToFile:@"/Users/ms/Desktop/FileManager/file.txt" atomically:YES];
//    /Users/ms/Desktop/FileManager/file.txt
    
@interface Student () <NSCoding>

@end

@implementation Student

- (void)encodeWithCoder:(NSCoder *)aCoder {
    
    [aCoder encodeObject:self.name forKey:@"name"];
    [aCoder encodeObject:self.studentNumber forKey:@"studentNumber"];
    [aCoder encodeObject:self.sex forKey:@"sex"];
}
- (id)initWithCoder:(NSCoder *)aDecoder {
    if (self = [super init]) {
        self.name = [aDecoder decodeObjectForKey:@"name"];
        self.studentNumber = [aDecoder decodeObjectForKey:@"studentNumber"];
        self.sex = [aDecoder decodeObjectForKey:@"sex"];
    }
    return self;
}
- (NSString *)description
{
    return [NSString stringWithFormat:@"name :%@ studentNumber :%@ sex :%@", _name,_studentNumber,_sex];
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值