1. 源代码下载链接:06-归档普通对象.zip
    34.2 KB
  2. // MJPerson.h

  3. //
  4. //  MJPerson.h
  5. //  06-归档普通对象
  6. //
  7. //  Created by apple on 13-12-11.
  8. //  Copyright (c) 2013年itcast. All rights reserved.
  9. //
  10. #import<Foundation/Foundation.h>
  11. @interfaceMJPerson : NSObject <NSCoding>
  12. @property(nonatomic,copy) NSString *name;
  13. @property(nonatomic,assign)intage;
  14. @property(nonatomic,assign)doubleheight;
  15. @end
  16. // MJPerson.m

    Map

  17. //
  18. //  MJPerson.m
  19. //  06-归档普通对象
  20. //
  21. //  Created by apple on 13-12-11.
  22. //  Copyright (c) 2013年itcast. All rights reserved.
  23. //
  24. #import"MJPerson.h"
  25. @implementationMJPerson
  26. #pragma mark将对象归档的时候会调用(将对象写入文件之前会调用)
  27. //在这个方法说清楚:
  28. // 1.哪些属性需要存储
  29. // 2.怎样存储这些属性
  30. - (void)encodeWithCoder:(NSCoder *)encoder
  31. {
  32.    //将_name属性值进行编码(会将_name的值存进文件)
  33.     [encoder encodeObject:_name forKey:@"name"];
  34.    
  35.     [encoder encodeInt:_age forKey:@"age"];
  36.    
  37.    
  38.     [encoder encodeDouble:_height forKey:@"height"];
  39.    
  40.     NSLog(@"Person---encodeWithCoder-----");
  41. }
  42. #pragma mark当从文件中解析对象时调用
  43. //在这个方法说清楚:
  44. // 1.哪些属性需要解析(读取)
  45. // 2.怎样解析(读取)这些属性
  46. - (id)initWithCoder:(NSCoder *)decoder
  47. {
  48.     NSLog(@"Person---initWithCoder-----");
  49.    if(self = [super init]) {
  50.         _name = [decoder decodeObjectForKey:@"name"];
  51.         _age = [decoder decodeIntForKey:@"age"];
  52.         _height = [decoder decodeDoubleForKey:@"height"];
  53.     }
  54.    return self;
  55. }
  56. @end
  57. // MJStudent.h

    Map

  58. //
  59. //  MJStudent.h
  60. //  06-归档普通对象
  61. //
  62. //  Created by apple on 13-12-11.
  63. //  Copyright (c) 2013年itcast. All rights reserved.
  64. //
  65. #import"MJPerson.h"
  66. @interfaceMJStudent : MJPerson
  67. @property(nonatomic,copy) NSString *no;
  68. @end
  69. // MJStudent.m

    Map

  70. //
  71. //  MJStudent.m
  72. //  06-归档普通对象
  73. //
  74. //  Created by apple on 13-12-11.
  75. //  Copyright (c) 2013年itcast. All rights reserved.
  76. //
  77. #import"MJStudent.h"
  78. @implementation MJStudent
  79. - (void)encodeWithCoder:(NSCoder *)encoder
  80. {
  81.     [super encodeWithCoder:encoder];
  82.    
  83.     [encoder encodeObject:_no forKey:@"no"];
  84.    
  85.     NSLog(@"MJStudent---encodeWithCoder-----");
  86. }
  87. //本文永久链接,转载请注明出处:http://www.cnblogs.com/ChenYilong/p/3490624.html
  88. - (id)initWithCoder:(NSCoder *)decoder
  89. {
  90.    if(self= [superinitWithCoder:decoder]) {
  91.         NSLog(@"MJStudent---encodeWithCoder-----");
  92.         _no = [decoder decodeObjectForKey:@"no"];
  93.     }
  94.    returnself;
  95. }
  96. @end
  97. // MJViewController.h

    Map

  98. //
  99. //  MJViewController.h
  100. //  06-归档普通对象
  101. //
  102. //  Created by apple on 13-12-11.
  103. //  Copyright (c) 2013年itcast. All rights reserved.
  104. //
  105. #import<UIKit/UIKit.h>
  106. @interfaceMJViewController : UIViewController
  107. - (IBAction)save;
  108. - (IBAction)read;
  109. @end
  110. // MJViewController.m

    Map

  111. //
  112. //  MJViewController.m
  113. //  06-归档普通对象
  114. //
  115. //  Created by apple on 13-12-11.
  116. //  Copyright (c) 2013年itcast. All rights reserved.
  117. //
  118. #import"MJViewController.h"
  119. #import"MJPerson.h"
  120. #import"MJStudent.h"
  121. @interfaceMJViewController ()
  122. @end
  123. @implementationMJViewController
  124. - (void)viewDidLoad
  125. {
  126.     [superviewDidLoad];
  127. // Do any additional setup after loading the view, typically from a nib.
  128. }
  129. - (void)didReceiveMemoryWarning
  130. {
  131.     [superdidReceiveMemoryWarning];
  132.    // Dispose of any resources that can be recreated.
  133. }
  134. - (IBAction)save {
  135. //    MJPerson *p = [[MJPerson alloc] init];
  136. //    p.name = @"jack";
  137. //    p.age = 10;
  138. //    p.height = 1.55;
  139. //   
  140. //    NSString *path = @"/Users/apple/Desktop/person.data";
  141. //    //归档
  142. //    [NSKeyedArchiver archiveRootObject:p toFile:path];
  143.    
  144.     MJStudent *stu = [[MJStudent alloc] init];
  145.     stu.name =@"rose";
  146.     stu.age =20;
  147.     stu.height =1.75;
  148.     stu.no =@"110";
  149.    
  150.     NSString *path =@"/Users/apple/Desktop/person.data";
  151.    
  152.     [NSKeyedArchiver archiveRootObject:stu toFile:path];
  153. }
  154. - (IBAction)read {
  155.     NSString *path =@"/Users/apple/Desktop/person.data";
  156.    
  157.     MJStudent *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
  158.    
  159.     NSLog(@"%@ - %d - %f- %@", stu.name, stu.age, stu.height, stu.no);
  160. ////本文永久链接,转载请注明出处:http://www.cnblogs.com/ChenYilong/p/3490624.html
  161. //    //读档(反归档)
  162. //    MJPerson *p = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
  163. //   
  164. //    NSLog(@"%@ - %d - %f", p.name, p.age, p.height);
  165. }
  166. @end

归档普通对象Demo示例程序源代码的更多相关文章

  1. 03.WebView演练-iOS开发Demo(示例程序)源代码

    技术博客http://www.cnblogs.com/ChenYilong/   新浪微博http://weibo.com/luohanchenyilong   //转载请注明出处--本文永久链接:h ...

  2. iOS多线程 iOS开发Demo(示例程序)源代码

    本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址(2013年12月29日更新版)   iOS程序源代码下载链接:01.大任务.zip22 ...

  3. 代理设计模式iOS开发Demo(示例程序)源代码

        iOS程序源代码下载链接:03-代理设计模式.zip28.3 KB // main.m // //  main.m //  03-代理设计模式 // //  Created by apple ...

  4. 01-QQ 3-最终重构版 Demo示例程序源代码

      源代码下载链接:01-QQ 3.zip292.5 KB // QQAppDelegate.h Map // //  QQAppDelegate.h //  01-QQ // //  Created ...

  5. 01-导航实例-QQ空间Demo示例程序源代码

    01-导航实例-QQ空间.zip62.4 KB // MJLoginViewController.h Map // //  MJLoginViewController.h //  01-导航实例-QQ ...

  6. 01-modal Demo示例程序源代码

    源代码下载链接:01-modal.zip37.8 KB // MJAppDelegate.h // //  MJAppDelegate.h //  01-modal // //  Created by ...

  7. 02-更改窗口的根控制器 Demo示例程序源代码

      源代码下载链接:02-更改窗口的根控制器.zip18.0 KB // MJAppDelegate.h // //  MJAppDelegate.h //  02-更改窗口的根控制器 // //  ...

  8. 12.13记录//QQDemo示例程序源代码

            笔记的完整版pdf文档下载地址: https://www.evernote.com/shard/s227/sh/ac692160-68c7-4149-83ea-0db5385e28b0 ...

  9. kafka_2.11-0.8.2.1+java 生产消费程序demo示例

      Kafka学习8_kafka java 生产消费程序demo示例 kafka是吞吐量巨大的一个消息系统,它是用scala写的,和普通的消息的生产消费还有所不同,写了个demo程序供大家参考.kaf ...

随机推荐

  1. python基础——列表、字典

    Python核心数据类型--列表 列表是一个任意类型的对象的位置相关的有序集合,它没有固定的大小.大小可变的,通过偏移量进行赋值以及其他各种列表的方法进行调用,能够修改列表.其他更多的功能可以查阅py ...

  2. Qt 实现脉搏检测-2,简陋的功能产品

    今天终于可以接上硬件来显示真是的脉搏情况了,上图 主要就是显示脉搏的心跳曲线,和IBI 数据来源是三个,串口,网口和蓝牙,目前只实现了串口,过程应该都是差不多的,监听,读取,解析,等硬件更新后,再次更 ...

  3. 实战小项目之基于yolo的目标检测web api实现

    上个月,对微服务及web service有了一些想法,看了一本app后台开发及运维的书,主要是一些概念性的东西,对service有了一些基本了解.互联网最开始的构架多是cs构架,浏览器兴起以后,变成了 ...

  4. c# 生成dll

    进入项目属性栏里,选择输出类型为类库.

  5. org.json.Json Object的put和append方法比较

    json.append(key,value) 会把 value 包装成一个数组 JSONObject append = new JSONObject().append("a", & ...

  6. DPDK vhost库

    原创翻译,转载请注明出处. vhost库实现了一个用户空间的virtio net server,允许用户直接处理virtio ring队列.换句话说,它让用户可以从VM virtio网络设备读取或写入 ...

  7. libevent 多线程

    对于evbuffer,如果libevent使用了evthread_use_pthreads();那么所有的单个evbuffer操作就已经是原子的了,调用操作相关的接口进去就上锁,出来解锁,那么 evb ...

  8. Linux挂载Win共享文件夹 一

    1, Win下选中文件夹,属性设置为共享,红圈中的为共享路径,挂载时//ip/共享路径 2, 3,Linux需要安装这两个软件 rpm -qa | grep samba-client rpm -qa ...

  9. [Java文件操作] 将素数输出到文件

    [要求]编写程序求出10万以内的所有素数,并将这些素数输出到一个文本文件中,每行文本只包含一个素数数据. import java.util.*; import java.io.*; public cl ...

  10. 集群hadoop ubuntu版

    搭建ubuntu版hadoop集群 用到的工具:VMware.hadoop-2.7.2.tar.jdk-8u65-linux-x64.tar.ubuntu-16.04-desktop-amd64.is ...