plist文件的 偏好设置 存储与读取 自定义对象归档

plist文件的存储读取

 1 #import "HMViewController.h"
 2 
 3 @interface HMViewController ()
 4 
 5 @end
 6 
 7 @implementation HMViewController
 8 // 当点点击保存的时候调用
 9 - (IBAction)save:(id)sender {
10     // 获取沙盒的根路径
11 //    NSString *home = NSHomeDirectory();
12     
13     // 拼接Documents路径
14 //    NSString *docPath = [home stringByAppendingString:@"/Documents"];
15 //    NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];
16     
17     
18     /**
19      *  NSDocumentDirectory : 查找Documents文件夹
20         NSUserDomainMask : 在用户的应用程序下查找
21      YES 把路径展开 NO 当前应用的根路径 == ~ 
22      NO  ~/Documents
23 
24      */
25     NSString *docPath =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
26     NSLog(@"%@",docPath);
27     
28     // 拼接文件路径
29     NSString *filePath = [docPath stringByAppendingPathComponent:@"data.plist"];
30     
31     // 只有具备writeToFile:的对象才能使用plist存储,NSArray
32     NSArray *array = @[@1,@2,@"123"];
33     
34     [array writeToFile:filePath atomically:YES];
35     
36 //    NSLog(@"%@",docPath);
37     
38     
39     
40 }
41 
42 //当点击读取的时候调用
43 - (IBAction)read:(id)sender {
44     NSString *docPath =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
45     NSLog(@"%@",docPath);
46     
47     // 拼接文件路径
48     NSString *filePath = [docPath stringByAppendingPathComponent:@"data.plist"];
49     
50    NSArray *data = [NSArray arrayWithContentsOfFile:filePath];
51     NSLog(@"%@",data);
52     
53 }
54 
55 - (void)viewDidLoad
56 {
57     [super viewDidLoad];
58     // Do any additional setup after loading the view, typically from a nib.
59 }
60 
61 - (void)didReceiveMemoryWarning
62 {
63     [super didReceiveMemoryWarning];
64     // Dispose of any resources that can be recreated.
65 }
66 
67 @end

偏好设置的存储与读取

 1 #import "HMViewController.h"
 2 
 3 @interface HMViewController ()
 4 
 5 @end
 6 
 7 @implementation HMViewController
 8 - (IBAction)save:(id)sender {
 9     
10     // [NSUserDefaults standardUserDefaults]可以直接操作偏好设置文件夹
11     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
12     
13     // 自动帮我们生成一个plist文件存放在偏好设置的文件夹
14     [defaults setObject:@"hm" forKey:@"account"];
15     
16     // 同步:把内存中的数据和沙盒同步
17     [defaults synchronize];
18     
19 }
20 - (IBAction)read:(id)sender {
21     // [NSUserDefaults standardUserDefaults]可以直接操作偏好设置文件夹
22     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
23 
24    NSLog(@"%@",[defaults objectForKey:@"account"]);
25     
26 //    NSDictionary *dict = @{@"account":@"hm"};
27 //    
28 //    dict writeToFile:<#(NSString *)#> atomically:<#(BOOL)#>
29     
30 }
31 
32 /*
33     偏好设置的好处
34     不用关心文件名
35     快速进行键值对存储的时候用偏好设置
36  
37  
38  */
39 
40 - (void)viewDidLoad
41 {
42     [super viewDidLoad];
43     // Do any additional setup after loading the view, typically from a nib.
44 }
45 
46 - (void)didReceiveMemoryWarning
47 {
48     [super didReceiveMemoryWarning];
49     // Dispose of any resources that can be recreated.
50 }
51 
52 @end

自定义对象归解档

  1 //
  2 //  HMPerson.h
  3 //  08-自定义对象归档
  4 //
  5 //  Created by yz on 14-8-29.
  6 //  Copyright (c) 2014年 iThinker. All rights reserved.
  7 //
  8 
  9 #import <Foundation/Foundation.h>
 10 
 11 @interface HMPerson : NSObject<NSCoding>
 12 
 13 @property (nonatomic, assign) int age;
 14 
 15 @end
 16 
 17 //
 18 //  HMPerson.m
 19 //  08-自定义对象归档
 20 //
 21 //  Created by yz on 14-8-29.
 22 //  Copyright (c) 2014年 iThinker. All rights reserved.
 23 //
 24 
 25 #import "HMPerson.h"
 26 
 27 @implementation HMPerson
 28 
 29 // 在对象归档的时候调用
 30 // 哪些属性需要归档
 31 // 这些属性怎么归档
 32 - (void)encodeWithCoder:(NSCoder *)aCoder
 33 {
 34     [aCoder encodeInt:_age forKey:@"age"];
 35 }
 36 
 37 // 在对象解档的时候调用
 38 // 哪些属性需要解档
 39 // 这些属性怎么解档
 40 
 41 - (id)initWithCoder:(NSCoder *)aDecoder
 42 {
 43     // 当父类实现了NSCoding,就能调用 [super initWithCoder]
 44     if (self = [super init]) {
 45         _age = [aDecoder decodeIntForKey:@"age"];
 46     }
 47     return self;
 48 }
 49 
 50 @end
 51 
 52 //
 53 //  HMViewController.m
 54 //  08-自定义对象归档
 55 //
 56 //  Created by yz on 14-8-29.
 57 //  Copyright (c) 2014年 iThinker. All rights reserved.
 58 //
 59 
 60 #import "HMViewController.h"
 61 
 62 #import "HMPerson.h"
 63 
 64 @interface HMViewController ()
 65 
 66 @end
 67 
 68 @implementation HMViewController
 69 
 70 - (IBAction)save:(id)sender {
 71     HMPerson *person = [HMPerson new];
 72     person.age = 18;
 73     
 74     NSString *docPath =  NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
 75     
 76     // 拼接文件路径
 77     NSString *filePath = [docPath stringByAppendingPathComponent:@"person.data"];
 78     
 79     [NSKeyedArchiver archiveRootObject:person toFile:filePath];
 80     
 81 
 82 }
 83 - (IBAction)read:(id)sender {
 84     NSString *docPath =  NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
 85     
 86     // 拼接文件路径
 87     NSString *filePath = [docPath stringByAppendingPathComponent:@"person.data"];
 88     
 89     HMPerson *p = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
 90     NSLog(@"%d",p.age);
 91 }
 92 
 93 - (void)viewDidLoad
 94 {
 95     [super viewDidLoad];
 96     // Do any additional setup after loading the view, typically from a nib.
 97 }
 98 
 99 - (void)didReceiveMemoryWarning
100 {
101     [super didReceiveMemoryWarning];
102     // Dispose of any resources that can be recreated.
103 }
104 
105 @end
原文地址:https://www.cnblogs.com/liqiantu/p/4441910.html