ModelUser.m 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. //
  2. // ModelUser.m
  3. // model
  4. //
  5. // Created by JuYi on 2018/7/18.
  6. // Copyright © 2018年 Mine. All rights reserved.
  7. //
  8. #import "ModelUser.h"
  9. // 账号的存储路径
  10. #define YanCAccountFilePath [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"model.data"]
  11. @implementation ModelUser
  12. +(ModelUser *)modelUser
  13. {
  14. __strong static ModelUser *modelUser;
  15. static dispatch_once_t onceToken;
  16. dispatch_once(&onceToken, ^{
  17. modelUser = [[ModelUser alloc] init];
  18. });
  19. return modelUser;
  20. }
  21. //编码方法,当对象被编码成二进制数据时调用。
  22. -(void)encodeWithCoder:(NSCoder *)aCoder {
  23. //在编码方法中,需要对对象的每一个属性进行编码。
  24. [aCoder encodeObject:_pk forKey:@"pk"];
  25. [aCoder encodeObject:_modelpk forKey:@"modelpk"];
  26. [aCoder encodeObject:_coin_a forKey:@"coin_a"];
  27. [aCoder encodeObject:_coin_ir forKey:@"coin_ir"];
  28. [aCoder encodeObject:_pet forKey:@"pet"];
  29. }
  30. //解码方法,当把二进制数据转成对象时调用。
  31. -(instancetype)initWithCoder:(NSCoder *)aDecoder {
  32. //如果父类也遵守NSCoding协议,那么需要写self = [super initWithCoder]
  33. self = [super init];
  34. if (self) {
  35. _pk = [aDecoder decodeObjectForKey:@"pk"];
  36. _modelpk = [aDecoder decodeObjectForKey:@"modelpk"];
  37. _coin_a = [aDecoder decodeObjectForKey:@"coin_a"];
  38. _coin_ir = [aDecoder decodeObjectForKey:@"coin_ir"];
  39. _pet = [aDecoder decodeObjectForKey:@"pet"];
  40. }
  41. return self;
  42. }
  43. /**
  44. * 存储帐号
  45. */
  46. + (void)save:(ModelUser *)user {
  47. // 归档 1
  48. // [NSKeyedArchiver archiveRootObject:user toFile:YanCAccountFilePath];
  49. //新的方法归档 2
  50. //准备路径: YanCAccountFilePath
  51. //1:准备存储数据的对象
  52. NSMutableData *data = [NSMutableData data];
  53. //2:创建归档对象
  54. NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
  55. //3:开始归档
  56. [archiver encodeObject:user forKey:@"user"];
  57. //4:完成归档
  58. [archiver finishEncoding];
  59. //5:写入文件当中
  60. [data writeToFile:YanCAccountFilePath atomically:YES];
  61. }
  62. /**
  63. * 读取帐号
  64. */
  65. + (ModelUser *)user {
  66. //反归档1
  67. // YanCBMUser *user = [NSKeyedUnarchiver unarchiveObjectWithFile:YanCAccountFilePath];
  68. //反归档2
  69. //准备解档路径
  70. NSData *myData = [NSData dataWithContentsOfFile:YanCAccountFilePath];
  71. //创建反归档对象
  72. NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:myData];
  73. //反归档
  74. // YanCBMUser *user = [YanCBMUser new];
  75. ModelUser *user = [unarchiver decodeObjectForKey:@"user"];
  76. //完成反归档
  77. [unarchiver finishDecoding];
  78. return user;
  79. }
  80. - (void)setValue:(id)value forUndefinedKey:(NSString *)key {
  81. }
  82. @end