iOS 数据序列化,NSCoding, NSCoder
iOS可以利用NSKeyedArchiver类将对象序列化成NSData存储在磁盘上,但前提是该对象所属的类必须遵从NSCoding协议。
NSCoding协议包含两个方法,要序列化的类必须实现它们
- (void)encodeWithCoder:(NSCoder *)aCoder; //序列化的时候将数据encode (将数据编码)
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder; // 反序列化的时候将数据decode (将数据解码)
例:
@interface MyDataObj: NSObject<NSCoding>
@property (nonatomic, strong) NSString *name;
@end
@implementation MyDataObj
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder.encodeObject:self.name forKey:@"name"];
}
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
[self.name = aDecoder.decodeObjectForKey:@"name"];
}
@end
此时,MyDataObj类即可被序列化,序列化过程:
MyDataObj * myDataObj = [[MyDataObj alloc] init];
NSData *myObjData = [NSKeyedArchiver archivedDataWithRootObject:myDataObj];
[[NSUserDefaults standardUserDefatults] setObject:myObjData forKey:@"myObjDataKey"];
反序列化过程:
NSData *myObjDataOnDisk = [[NSUserDefaults standardUserDefaults] objectForKey:@"myObjDataKey"];
MyDataObj *myObjOnDisk = [NSKeyedUnarchiver unarchiveObjectWithData:myObjDataOnDisk];
相关推荐
在iOS开发中,序列化与反序列化是数据持久化的重要手段,特别是在处理对象的状态保存、数据传输或者存储时显得尤为关键。iOS归档是一种原生的序列化机制,它利用Objective-C的Runtime特性,将对象转换为二进制数据,...
使用`NSKeyedArchiver`和`NSKeyedUnarchiver`可以实现对象的序列化和反序列化。归档的缺点在于如果模型发生变化,旧的归档文件可能无法正确解码。 4. **SQLite数据库** SQLite是一个轻量级的关系型数据库,可以在...
本篇文章将详细介绍三种主要的数据持久化方法:SQLite(通过FMDB库)、Core Data以及Archiver(序列化)。 **1. SQLite (通过FMDB库)** SQLite是一个轻量级的、自包含的、开源的关系型数据库,它在iOS中广泛用于...
序列化是指将对象转换为可以传输或存储的数据格式,对于JSON,这意味着将对象转换成JSON字符串。在iOS中,我们可以使用`NSJSONSerialization`类来完成这一过程。 #### 1. Objective-C ```objc // 定义一个实体类 @...
而Google Protobuf(Protocol Buffers)是一种高效的数据序列化协议,常用于网络通信和数据存储。本工具正是为了解决在Unity5环境中,使用Protobuf进行Android和iOS平台的泛型列表参数的正反序列化问题。 首先,...
归档的作用就是将对象以文件的形式保存到磁盘中,以使得数据序列化和持久化。 使用归档的时候读取该文件保存路径来读取文件的内容,归档的文件是进行过保密处理的,在磁盘上是无法查看文件的内容的,这也是和属性...
序列化是指将内存中的数据结构或对象转换为可以存储或传输的格式,而反序列化则是将这种格式还原为原本的数据结构或对象。CArchive类主要应用于文件和内存数据的存档操作,使得对象的状态能够被持久化保存,然后在...
在iOS应用开发中,数据序列化是一个至关重要的过程,它涉及到将对象转换为可以存储或传输的数据格式,如JSON或二进制。本资源“ios应用源码之自动序列化autoencodedecode 20181210”提供了一个关于如何在iOS应用中...
在iOS开发中,序列化是一种将对象转换为可存储或传输格式的过程,通常用于持久化数据或者在网络上传输数据。本资源"IOS应用源码之自动序列化AutoEncodeDecode.zip"提供了一种自动序列化的实现,它可以帮助开发者更...
本文将详细介绍五种常见的iOS数据持久化方案:plist文件、偏好设置(Preference)、NSKeyedArchiver(归档)、SQLite 3以及CoreData。 首先,我们来了解一下iOS的沙盒机制。每个iOS应用都有自己的专属空间,称为...
总之,iOS应用开发中,Objective-C实体类对象的序列化和反序列化是数据持久化和网络通信的重要手段。通过`NSJSONSerialization`类,我们可以方便地在对象和JSON格式之间进行转换,从而实现数据的存储和交换。同时,...
在iOS开发中,序列化是一种将对象转换为可存储或传输格式的过程,通常用于持久化数据或者在网络上传输数据。本资源"AutoEncodeDecode.zip"包含的是一套针对iOS应用的源码,专注于自动序列化功能,即AutoEncodeDecode...
在iOS开发中,数据序列化是一项重要的任务,它允许我们将对象转换为可以在存储或网络传输过程中使用的格式。这个“IOS应用源码之自动序列化AutoEncodeDecode”项目着重于自动化的对象序列化和反序列化过程,使得数据...
在iOS开发中,序列化是一种将对象转换为可存储或传输格式的过程,而反序列化则是将这种格式恢复为原始对象。本项目...对于希望深入了解iOS数据存储和网络通信的开发者来说,这是一个非常有价值的资源。
// 在JSON数据中实现序列化协议 + (NSArray*> *)modelPropertyKeys { return @[@"name", @"age"]; } + (NSValueTransformer *)nameJSONTransformer { return [MTLValueTransformer ...
对于JSON,iOS提供了JSONSerialization类,可以方便地将Foundation对象转换为JSON数据,或者从JSON数据反序列化回Foundation对象。JSONSerialization与网络请求结合使用,可以方便地处理API响应。 7. **第三方库:...
Protocol Buffers是Google推出的一种高效的数据序列化协议,它提供了一种语言无关、平台无关的二进制数据表示方式。相比于XML或JSON等文本格式,Protobuf在传输效率和存储空间上有着显著优势,更适合于网络游戏和...
序列化是将一个对象的状态转化为可存储或可传输的形式的过程,而反序列化则是相反的过程,即从序列化的数据恢复原来的对象。在HTTP上下文中,序列化涉及将Swift对象转换为HTTP请求的body,如JSON或XML格式。同样,反...
在iOS开发中,序列化和反序列化是两个重要的概念,它们主要用于数据持久化和传输。序列化是指将对象转换为可...同时,它还强调了正确管理数据序列化和队列的重要性,以避免潜在的问题,如数据丢失、崩溃或性能瓶颈。
数据持久化时,可以先将列表数据序列化,然后存储到本地,当应用启动时再反序列化并填充到列表控件。 综上所述,“ios-数据持久化.zip”资源涵盖了数据持久化的基本概念,特别是通过归档解档和JSON序列化来保存...