- 浏览: 41482 次
文章分类
最新评论
-
peng13123:
...
Hibernate4+Spring3+SpringMVC -
peng13123:
好吧,呵呵zxxwlj 写道 翻/墙?违法。。。
我想问为啥我goagent的文章被删除了 -
zxxwlj:
翻/墙?违法。。。
我想问为啥我goagent的文章被删除了
开篇
1到底这个序列化有啥作用?
面向对象的程序在运行的时候会创建一个复杂的对象图,经常要以二进制的方法序列化这个对象图,这个过程叫做Archiving. 二进制流可以通过网络或写入文件中(来源于某教材的一段话)
本人的理解是当你于写数据需要本地存储时,即将你的数据写到硬盘上的时候,你就必须对他进行序列化,转换成二进制文件,从而便于在磁盘上的读写,同理在取出的时候必须将其在反序列化,这样才能将数据读出来,就好比加密和解密的过程。
2 为什么我将数据写到plist 中的时候,也是存储到本地的磁盘上,但是我就没有序列化啊?
大家有没有发现,其实plist 的数据是类型是有限制的,就那么几种特定的数据类型,,nsstring ,大家有没有尝试过将一个自己定义的类放进去(写进plist ),在读出来?
结果是什么大家可以先猜想。
其实在nsstring 的类的定义中已经添加了协议<nscoding> 即他是实现了nscoding 代理的方法的。
@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
深入
3 NScoder 和 NScoding
NScoding 是一个协议,主要有下面两个方法
-(id)initWithCoder:(NSCoder *)coder;//从coder中读取数据,保存到相应的变量中,即反序列化数据
-(void)encodeWithCoder:(NSCoder *)coder;// 读取实例变量,并把这些数据写到coder中去。序列化数据
NSCoder 是一个抽象类,抽象类不能被实例话,只能提供一些想让子类继承的方法。
NSKeyedUnarchiver 从二进制流读取对象。
NSKeyedArchiver 把对象写到二进制流中去。
4一个简单的例子
一般是在自己定义的类中需要在.h 文件中加入<NScoding>
在.m 文件众实现他的的两个代理方法,这个代理方法将会被自动调用
以上是对该类序列化和反序列化。
1到底这个序列化有啥作用?
面向对象的程序在运行的时候会创建一个复杂的对象图,经常要以二进制的方法序列化这个对象图,这个过程叫做Archiving. 二进制流可以通过网络或写入文件中(来源于某教材的一段话)
本人的理解是当你于写数据需要本地存储时,即将你的数据写到硬盘上的时候,你就必须对他进行序列化,转换成二进制文件,从而便于在磁盘上的读写,同理在取出的时候必须将其在反序列化,这样才能将数据读出来,就好比加密和解密的过程。
2 为什么我将数据写到plist 中的时候,也是存储到本地的磁盘上,但是我就没有序列化啊?
大家有没有发现,其实plist 的数据是类型是有限制的,就那么几种特定的数据类型,,nsstring ,大家有没有尝试过将一个自己定义的类放进去(写进plist ),在读出来?
结果是什么大家可以先猜想。
其实在nsstring 的类的定义中已经添加了协议<nscoding> 即他是实现了nscoding 代理的方法的。
@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
深入
3 NScoder 和 NScoding
NScoding 是一个协议,主要有下面两个方法
-(id)initWithCoder:(NSCoder *)coder;//从coder中读取数据,保存到相应的变量中,即反序列化数据
-(void)encodeWithCoder:(NSCoder *)coder;// 读取实例变量,并把这些数据写到coder中去。序列化数据
NSCoder 是一个抽象类,抽象类不能被实例话,只能提供一些想让子类继承的方法。
NSKeyedUnarchiver 从二进制流读取对象。
NSKeyedArchiver 把对象写到二进制流中去。
4一个简单的例子
一般是在自己定义的类中需要在.h 文件中加入<NScoding>
在.m 文件众实现他的的两个代理方法,这个代理方法将会被自动调用
- (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:self.InsureSolutionID forKey:@"personName"]; [aCoder encodeObject:self.InsureSolutionName forKey:@"personAge"]; } - (id)initWithCoder:(NSCoder *)aDecoder { self = [super init]; if (self) { self.InsureSolutionID = [aDecoder decodeObjectForKey:@"personName"]; self.InsureSolutionName = [aDecoder decodeObjectForKey:@"personAge"]; } return self; }
以上是对该类序列化和反序列化。
NSData *archiveCarPriceData = [NSKeyedArchiver archivedDataWithRootObject:self.DataArray]; [[NSUserDefaults standardUserDefaults] setObject:archiveCarPriceData forKey:@"DataArray"]; NSData *myEncodedObject = [[NSUserDefaults standardUserDefaults] objectForKey:@"DataArray"]; self.dataList = [NSKeyedUnarchiver unarchiveObjectWithData: myEncodedObject];
发表评论
-
Xcode7 ios9不能用http请求
2015-09-17 18:49 691Xcode7 使用NSURLSession发送HTTP请求的问 ... -
iOS UITableViewCell 中 调整imageView 的图片大小
2015-08-26 16:10 1390//设置图片 [cell.imageView setImage ... -
[转]iOS 万能跳转界面方法 (runtime实用篇一)
2015-08-24 10:27 586在开发项目中,会有这样变态的需求: 推送:根据服务端推送过来 ... -
周堋斐:梦想的开发者
2015-04-13 17:56 012年的深圳软件园也是各种。呵呵哒 -
IOS判断app在appstore是否有可用的更新
2015-03-13 10:25 543iTunes可以提供app的版本信息,主要通过appid获取, ... -
uitableview分割线 左右边距相同
2015-01-21 15:59 2555_myTableView1.separatorInset= ... -
在uiimageview中设置网络图片等比例大小
2014-12-30 15:38 726NSData *data=[NSData dataWith ... -
[转]iOS UISCrollView循环滚动 实现
2014-12-30 13:42 691google了半天发现很多人竟然搞不定,甚至还有人用数组左移右 ... -
push的时候,感觉上一个页面的视图还有残留,然后停顿了一下,才消失的解决
2014-12-10 20:04 1842这个,以前遇到过,后来不知怎么弄好了,现在就是你如果改下pus ... -
view整体上移
2014-11-26 16:06 911如果你准备将你的老的 iOS 6 app 迁移到 iOS 7/ ... -
广告轮播
2014-11-17 20:05 480h <UIAlertViewDelegate,UIScr ... -
设置全局navigation barbuttonitem
2014-11-17 19:58 748#pragma mark 设置全局navigation bar ... -
nsdate 前一天,后一天
2014-11-17 19:57 1171h { NSDate *choseDate;//显示日 ... -
sdwebimage ios8 报错
2014-11-02 00:22 694报错:Use of undeclared identifier ... -
之前有人整理过Git上好用的iOS库,我搬运一下
2014-10-31 14:56 339之前有人整理过Git上好用的iOS库,我搬运一下: http: ... -
ios中添加和移除view
2014-08-14 11:36 832la = [[UILabel alloc]init]; ... -
UITextField只能输入数字且小数点后保留2位
2014-07-18 17:17 578#pragma mark UITextFieldDeleg ... -
NSTimer倒计时
2014-07-17 10:56 533// [NSTimer scheduledTimerWithT ... -
转】视图切换总结
2014-06-04 12:06 5511、利用ModalViewController切换View ... -
ios 判断网络连接以及获取路由信息
2014-05-29 11:53 1685首先 引入 Reachability.h 和Reachabil ...
相关推荐
`NSCoding`是苹果提供的一种对象序列化机制,允许我们将对象转换为字节流(编码)并从字节流中还原对象(解码)。这对于保存、加载自定义对象到文件系统或云端存储非常有用。本篇文章将深入探讨`NSCoding`协议以及...
在iOS开发中,序列化与反序列化是数据持久化的重要手段,特别是在处理对象的状态保存、数据传输或者存储时显得尤为关键。iOS归档是一种原生的序列化机制,它利用Objective-C的Runtime特性,将对象转换为二进制数据,...
它展示了如何利用NSCoding进行对象序列化和反序列化,以及如何利用NSFileManager进行文件操作,这些都是iOS开发中的基础技能。通过理解和实践这个示例,开发者可以更好地掌握数据持久化的概念,从而提高应用的用户...
本文将详细讲解如何在Objective-C或Swift环境下,针对ARC(Automatic Reference Counting)内存管理机制,实现JSON实体类的序列化与反序列化。 ### 一、序列化(Serialization) 序列化是指将对象转换为可以传输或...
Parse-NSCoding, 用于序列化解析对象的iOS库 解析 nscoding此库为 PFObject/的实例或者子类添加 NSCoding 支持,以便它们可以被序列化和反序列化为( 对于自定义缓存插件,例如) 。 所有属性都将被序列化,包括解析...
在iOS开发中,序列化是一种将对象转换为可存储或传输格式的过程,通常用于持久化数据或者在网络上传输数据。本资源"AutoEncodeDecode.zip"包含的是一套针对iOS应用的源码,专注于自动序列化功能,即AutoEncodeDecode...
当你实现NSCoding协议并定义两个方法`encodeWithCoder:`和`initWithCoder:`时,NSKeyedArchiver可以自动处理对象的序列化和反序列化。 Swift的Codable协议则是更现代且更简洁的解决方案。如果一个类型遵循 Codable ...
总之,iOS应用开发中,Objective-C实体类对象的序列化和反序列化是数据持久化和网络通信的重要手段。通过`NSJSONSerialization`类,我们可以方便地在对象和JSON格式之间进行转换,从而实现数据的存储和交换。同时,...
在iOS开发中,序列化是一种将对象转换为可存储或传输格式的过程,而反序列化则是将这种格式恢复为原始对象。本项目"AutoEncodeDecode"聚焦于iOS应用中的自动序列化与反序列化技术,这在数据持久化、网络通信等方面...
在iOS 中实现对象序列化,需要遵行NSCoding协议,然后对对象的每个属性进行归档和接档赋值,响应的操作比较繁琐。本文主要介绍 利用 runtime遍历属性 大大简化代码量,下面来看看详细的介绍吧。 具体实现代码如下: ...
`NSCoding`是Apple提供的一种序列化机制,用于对象的编码和解码,从而实现数据的持久化。当一个类遵循`NSCoding`协议时,需要实现两个方法:`encodeWithCoder:`和`initWithCoder:`。前者负责将对象编码为可以存储的...
iOS提供了`NSKeyedArchiver` 和 `NSKeyedUnarchiver` 这两个类来进行对象的序列化和反序列化。 在`NSUserDefaults`中存储自定义对象的步骤如下: 1. 实现`NSCoding`协议:自定义的对象需要遵循`NSCoding`协议,并...
这种转换在序列化和反序列化过程中扮演着关键角色,使得数据能够在网络之间传输和存储。 首先,让我们讨论对象转字典的过程。在Objective-C中,我们可以使用NSKeyedArchiver和NSKeyedUnarchiver来实现。`...
总结来说,"iOS 存取数据之归档"这个主题涵盖了如何使用Objective-C或Swift中的归档技术来持久化数据,特别是通过NSKeyedArchiver进行序列化和反序列化的步骤。通过示例代码如`SaveDate`,我们可以学习如何处理不同...
这些类通常遵循`NSCopying`和`NSCoding`协议,以便进行对象复制和序列化/反序列化操作。 例如,假设有一个JSON如下: ```json { "name": "John Doe", "age": 30, "isDeveloper": true, "hobbies": ["reading",...
在iOS开发中,`NSCoding` 是一个非常重要的协议,它允许对象进行序列化和反序列化,即将对象的状态转化为可以存储或传输的数据格式,然后再还原回来。在标题提到的"Coding iOS客户端开源"项目中,`NSCoding` 被用于...
在iOS中,通常会将使用`NSCoding`序列化的数据存储在文档目录下,以避免用户数据丢失,并确保应用的安全性和隐私。 4. **如何使用`NSCoding`?** - 实现`NSCoding`协议:为你的自定义类添加协议遵循,并实现`...
NSKeyedArchiver是Objective-C中的序列化工具,可以将对象编码为可存储的字节流,然后解码恢复。适用于自定义对象的持久化,但需要遵循NSCoding协议。归档和解档方法分别是`archiveRootObject:toFile:`和`...
需要注意的是,当转换过程中涉及到自定义对象时,需要确保这些对象遵循了`NSCoding`协议,因为`NSKeyedArchiver`需要这个协议来序列化和反序列化对象。 在提供的压缩包文件`test_NSDictionary_NSData`中,可能包含...