【KakaJSON手册】07_Coding_归档_解档】的更多相关文章

KakaJSON可以只用一行代码将常用数据进行归档\解档 后面代码中会用到 file 文件路径 // 文件路径(String或者URL都可以) let file = "/Users/mj/Desktop/test.data" String let string1 = "123" // 将字符串写入文件 write(string1, to: file) // 从文件中读取字符串 let string2 = read(String.self, from: file) X…
一般用在用户登录,保存这个用户的信息 对象归档,就是把内存中对象持久化. 对象解档,就是把持久化的对象读取到内存. oc中对象归档解档大致分为以下几种方法: 从数量上可以分为: 对单个对象归档解档 对多个对象归档解档 从对象的存在形式上可以分为: 系统对象归档解档 自定义对象归档解档 接下来逐一编写代码做简单实现 1.单个系统对象归档及解档: void SingleSystemObject(){ NSArray *arr = [NSArray arrayWithObjects:@,, nil];…
1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer)模拟器应用沙盒的根路径在: (apple是用户名, 8.0是模拟器版本)/Users/apple/Libra…
自定义的对象的解档和归档 如果想对自己自定义的类进行解档和归档的话 必须遵循一个协议:NSCoding Student.h 文件 #import <Foundation/Foundation.h> @interface Student : NSObject<NSCoding> @property(nonatomic,strong)NSString *name; @property(nonatomic,assign)int age; -(instancetype)initWithNa…
iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹.ios开发中,我们需要数据持久化这一种技术,也需要不断在实际开发的工作与学习中完善数据持久化这一开发技术. [本次开发环境: Xcode:7.2     iOS Simulator:iphone6S plus   By:啊左]     (本节2个项目demo的下载:属性列表Demo.对象的归档解档Demo) 本文…
在之前转载的一片文章中,文中对浅复制和深复制进行了详细的解读,同时还提到了深复制(one-level-deep copy).完全复制(true copy)的概念,并指出iOS开发中的深复制是单层深赋值,本文将对这几个概念进行验证梳理. (单层和完全概念区分:例如多层数组只实现一层内容拷贝,其他层为指针拷贝成为单层深复制:若多层内容都实现拷贝称为完全复制) 程序中用到的几点概念补充 (1) 浅复制(shallow copy):在浅复制操作时,对于被复制对象的每一层都是指针复制. 深复制(one-l…
在构建应用程序时,有一个重要的问题是如何在每次启动之间持久化数据,以便重现最后一次关闭应用前的状态.在iOS和OS X上,苹果提供了三种选择:Core Data.属性列表(Property List)和带键值的编码(NSKeyedArchiver).当涉及到建模.查询.遍历.持久化等复杂的对象图时,Core Data无可替代.但并非所有应用程序都需要查询数据.处理复杂对象图,有时候使用NSKeyedArchiver更为简单. 1. 使用NSKeyedArchiver 如果要将各种类型的对象存储到…
写于前: 在之前转载的一片文章中.文中对浅复制和深复制进行了具体的解读,同一时候还提到了深复制(one-level-deep copy).全然复制(true copy)的概念,并指出iOS开发中的深复制是单层深赋值,本文将对这几个概念进行验证梳理. (单层和全然概念区分:比如多层数组仅仅实现一层内容拷贝,其它层为指针拷贝成为单层深复制:若多层内容都实现拷贝称为全然赋值) 程序中用到的几点概念补充 (1) 浅复制(shallow copy):在浅复制操作时,对于被复制对象的每一层都是指针复制. 深…
前言: 前天学习了NSUserDefaults,我们知道NSUserDefaults不能保存自定义对象,所以我们今天来认识一下归档(NSKeyedArchiver)和解档(NSKeyedUnarchiver).我们先来回顾一下JAVA是怎么实现保存一个自定义对象的!首先一个自定义对象必须实现Serializable接口,然后把一个对象序列化成二进制数据写入一个byte[]数据或者文件,反之则是从一个二进制数据或者文件中读取二进制数据反序列化成对象,所以我认为ios的归档解档其实就是类似JAVA序…
#import <Foundation/Foundation.h> @interface Student : NSObject <NSCoding>; @property(nonatomic,strong)NSString* name; @property(nonatomic,assign)int age; @property(nonatomic,copy)NSString* tel; -(id)initWithName:(NSString*)name endAge:(int)ag…
当我们需要将一个对象进行归档时,都要让该对象的类遵守NSCoding协议,再实现归档和接档方法.例如有一个Person类,该类有两个成员变量 @property (nonatomic,copy) NSString *name; @property (nonatomic,assign) int age; 两个协议的实现方法如下 /** * 将对象写入某个文件时需要调用,在该方法中说明哪些属性需要存储 */ - (void)encodeWithCoder:(NSCoder *)encoder { […
代码实现 遵守协议 class AccessToken: NSObject, NSCoding 实现协议方法 // MARK: - 归档&解档 required init(coder aDecoder: NSCoder) { access_token = aDecoder.decodeObjectForKey("access_token") as! String expires_in = aDecoder.decodeDoubleForKey("expires_in&…
简单的创建一个Person对象,并声明几个属性 @interface Person : NSObject<NSCoding> // 归档问题 必须遵守该协议 /** */ @property(copy,nonatomic)NSString * name; /** */ @property(assign,nonatomic)int age; @property(assign,nonatomic)int age1; @end 设置哪些属性是需要归档的 //告诉系统,归档哪些属性 - (void)e…
plist文件 plist的根Type只能是字典(NSDictionary)或者是数组(NSArray)所以归档时我们只能将数组或字典保存到plist文件中,但是NSString也能通过归档保存到plist文件中同时它也可以通过stringWithContentsOfFile解档,它保存到plist中时Type是空的,Value是有值的! plist文件的归档 NSArray *arr = [[NSArray alloc] initWithObjects:@"1", @"2&…
为什么要有Runtime的NSCoding的自动归档.接档 大家所熟知的方法 //归档方法 - (void)encodeWithCoder:(NSCoder *)aCoder { //当学生被归档,学生要将成员都归档 [aCoder encodeObject:self.name forKey:@"name"]; [aCoder encodeInteger:self.age forKey:@"age"]; } //解归档方法 - (id)initWithCoder:(…
在KakaJSON手册的第2篇文章中提过:由于JSON格式能表达的数据类型是比较有限的,所以服务器返回的JSON数据有时无法自动转换成客户端想要的数据类型 比如客户端想要的是Date类型,服务器返回的可能是字符串"2018-08-08 08:08:08.888"或者"2018/08/08 08:08:08.888" 像上述情况,KakaJSON内部是无法自动转换的,但提供了值过滤机制,允许开发者对JSON值进行自定义处理 日期处理 // 这2个DateFormatt…
一.沙盒和应用程序包 •iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒 •iOS常用目录: –Bundle –Documents –Library/Caches –Library/Preference –tmp 显示mac隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏mac隐藏文件:defaults write com.apple.finder AppleSh…
在iOS开发中,后台返回的数据大多是JSON格式,对应地会被网络框架层解析成Swift中的Dictionary.Array.由于数据类型的复杂.字段的繁多,直接使用Dictionary.Array会比较麻烦,比如items[0]["user"]["name"]这样的使用方式,非常不友善,而且没有智能语法提示.所以很多时候会考虑将JSON转换成Model之后再进行操作,会友善很多,比如items[0].user.name. Swift内置了一套Codable机制,可以…
当我们归档自定义对象的时候,可以重写自定义Model的的encodeWithCoder和initWithCoder 开始的大概是这样的,当属性非常多的时候 这种方式就会觉得不还好 好像重复在做一样的事情 其实这块我们可以交给runtime来做 - (void)encodeWithCoder:(NSCoder *)aCoder //将属性进行编码 { [aCoder encodeObject:self.name forKey:@"name"]; [aCoder encodeObject:…
#import <Foundation/Foundation.h> @interface PYPerson : NSObject @property (nonatomic, assign) int age; @property (nonatomic, assign) int height; @property (nonatomic, copy) NSString *name; @property (nonatomic, assign) int age2; @property (nonatomi…
1 使用归档的方式保存文件 1.1 问题 归档是任何对象都可以实现的更常规的方式,可以进行归档的对象需要实现NSCoding协议,而且每个实例变量应该是基本数据类型或者是实现NSCoding协议的某个类的实例.本案例使用归档NSKeyedArchiver和反归档NSKeyedUnarchiver将TRPerson对象写入和读取文件. 1.2 方案 首先创建一个TRPerson类,继承至NSObject,该类有两个属性NSString类型的name和NSInteger类型的age. 其次TRPer…
其中TRPerson为自定义的继承自NSObject的类的子类  其中有两个属性,name 和 age .h文件 #import @interface TRPerson : NSObject<</span>NSCoding> @property (nonatomic,strong)NSString *name; @property (nonatomic,strong)NSNumber * age; //初始化方法 - (id)initWithName:(NSString*)name…
========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 // 第一种写法 // 对象--文件 NSArray* array = [[NSArray alloc]initWithObjects:@"zhang", @"wang", @"li", nil]; NSString* filePath = [NS…
简介:这个号称是最快的DOM模型XML分析器,在使用它之前我都是用TinyXML的,因为它小巧和容易上手,但真正在项目中使用时才发现如果分析一个比较大的XML时TinyXML还是表现一般,所以我们决定使用RapidXML作为替换.当然是为了获取更好的性能,经过我们的初步试验后发现确实比TinyXML好,但看到网上关于rapidxml的资料零散,而且也缺乏一份较为权威的说明文档,找来找去还是得看官方的英文手册.所以我又下单了,翻译官方提供的手册,希望给各位朋友提供一些绵薄之力. 1. RapidX…
#import <objc/runtime.h> #import <objc/message.h> @implementation HDFArchiveModel - (void)encodeWithCoder:(NSCoder *)aCoder { unsigned ; Ivar *ivars = class_copyIvarList([self class], &outCount); ; i < outCount; ++i) { Ivar ivar = ivars…
socket.io 中文手册,socket.io 中文文档转载于:http://www.cnblogs.com/xiezhengcai/p/3956401.html 服务端 io.on('connection',function(socket));//监听客户端连接,回调函数会传递本次连接的socket io.sockets.emit('String',data);//给所有客户端广播消息 io.sockets.socket(socketid).emit('String', data);//给指…
在上一篇文章中提到:有时候服务器返回的某个字段的内容类型可能是不确定的 当时给出的解决方案是实现kk_modelValue或者kk_didConvertToModel方法,根据实际需求自定义JSON的解析逻辑 如果不确定的内容是要转成模型,KakaJSON有更简单的实现方案 举例 struct Book: Convertible { var name: String = "" var price: Double = 0.0 } struct Car: Convertible { var…
前面的文章介绍了如何利用KakaJSON进行JSON转Model,从这篇文章开始介绍如何将Model转成JSON 生成JSON和JSONString struct Car: Convertible { var name: String = "Bently" var new: Bool = true var age: Int = 10 var area: Float = 0.12345678 var weight: Double = 0.1234567890123456 var heig…
我的博客:CODE大全:www.codedq.net:业余草:www.xttblog.com:爱分享:www.ndislwf.com或ifxvn.com. Koa -- 基于 Node.js 平台的下一代 web 开发框架. 简介 koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架.使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率.koa 不在内核方法中绑定任何中间…
学习参考:http://es6.ruanyifeng.com/#docs/destructuring //2017/7/20 /*对象的解构赋值*/ //对象的解构赋值,当变量名的对象的属性名相同时,才能取到正确的值. */ let {foo,bar}={foo:"aaa",bar:"bbb"}; console.log(foo);//aaa console.log(bar);//bbb //变量名与属性名不相同,必须写成下面这样 */ var {foo:baz}=…