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

 

你可能感兴趣的:(plist)