详解在swift中实现NSCoding的自动归档和解档
本篇文章主要介绍了在swift中实现NSCoding的自动归档和解档,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
1.OC中
属性比较少的话 ,可以一个属性一个属性的去实现,但是假如多的话就利用runtime,很容易的就实现了NSCoding的自动归档和解档。
当然我们可以直接调用MJExtension的一个宏定义,并且调用NSCoding代理,就一句话就可以实现了。
2.swift
我们没办法去调用MJExtension的宏定义,但是我们可以调用MJExtension去实现里面的方法:
下面就是源代码
class BaseModel: NSObject,NSCoding{ //父类的init方法是必须去实现的 override init() { super.init() } required convenience init?(coder aDecoder: NSCoder) { self.init() self.mj_decode(aDecoder) } func encode(with aCoder: NSCoder) { self.mj_encode(aCoder) } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Swift编程中数组的使用方法指南
Swift 数组用于存储相同类型的值的顺序列表.Swift 要严格检查,它不允许错误地在数组中存放了错误的类型. 如果赋值创建数组到一个变量,它总是可变的,这意味着可以通过添加元素来改变它, 删除或更改其项目,但如果分配一个数组常量到则该数组,则数组是不可被改变的, 也就它的大小和内容不能被改变. 创建数组 可以使用下面的初始化程序语法来创建某种类型的空数组: 复制代码 代码如下: var someArray = [SomeType]() 下面是创建一个给定的大小,并用初始值的数组的语法: 复制
-
Swift中定义二维数组的方法及遍历方法示例
//定义方式一 var array1 = [[Int]]() //定义方式二 var array2 = Array<Array<Int>>() array1 = [ [13,1,4], [5,1,7,6] ] array2 = array1 // 一维数组的定义 var v = [Int]() v = [4,5,7,8] array2.append(v) println(array1) println(array2) //数组的遍历 for var i=0; i<array1
-
Swift流程控制之循环语句和判断语句详解
Swift提供了所有c类语言的控制流结构.包括for和while循环来执行一个任务多次:if和switch语句来执行确定的条件下不同的分支的代码:break和continue关键字能将运行流程转到你代码的另一个点上. 除了C语言传统的for-condition-increment循环,Swift加入了for-in循环,能更加容易的遍历arrays, dictionaries, ranges, strings等其他序列类型. Swift的switch语句也比C语言的要强大很多. Swift中swi
-
Swift教程之属性详解
属性是描述特定类.结构或者枚举的值.存储属性作为实例的一部分存储常量与变量的值,而计算属性计算他们的值(不只是存储).计算属性存在于类.结构与枚举中.存储属性仅仅只在类与结构中. 属性通常与特定类型实例联系在一起.但属性也可以与类型本身联系在一起,这样的属性称之为类型属性. 另外,可以定义属性观察者来处理属性值发生改变的情况,这样你就可以对用户操作做出反应.属性观察者可以被加在自己定义的存储属性之上,也可以在从父类继承的子类属性之上. 1.存储属性 最简单的情形,作为特定类或结构实例的一部分,存
-
Swift教程之字符串和字符详解
一个字符串String就是一个字符序列,像"hello,world","albatross"这样的.Swift中的字符串是用String关键词来定义的,同时它也是一些字符的集合,用Character定义. Swift的String和Character类型为代码提供了一个快速的,兼容Unicode的字符解决方案.String类型的初始化和使用都是可读的,并且和C中的strings类似.同时String也可以通过使用+运算符来组合,使用字符串就像使用Swift中的其他基
-
Swift中的指针操作和使用详细介绍
Apple期望在Swift中指针能够尽量减少登场几率,因此在Swift中指针被映射为了一个泛型类型,并且还比较抽象.这在一定程度上造成了在Swift中指针使用的困难,特别是对那些并不熟悉指针,也没有多少指针操作经验的开发者(包括我自己也是)来说,在Swift中使用指针确实是一个挑战.在这篇文章里,我希望能从最基本的使用开始,总结一下在Swift中使用指针的一些常见方式和场景.这篇文章假定你至少知道指针是什么,如果对指针本身的概念不太清楚的话,可以先看看这篇五分钟C指针教程(或者它的中文版本),应
-
Swift中的可变参数函数介绍
可变参数函数指的是可以接受任意多个参数的函数,我们最熟悉的可能就是 NSString 的 -stringWithFormat:方法了.在 Objective-C 中,我们使用这个方法生成字符串的写法是这样的: 复制代码 代码如下: NSString *name = @"Tom"; NSDate *date = [NSDate date]; NSString *string = [NSString stringWithFormat: @"Hell
-
Swift中使用正则表达式的一些方法
我使用Swift有段时间了,但最让人郁闷的是它还不能支持正则表达式. 先要说的是,这确实是门新语言,我在网站上有注释 a radar (rdar://17257306 for Apple folks). 如果你也认同这一观点,请支持. 我所说的正则表达式指的是这种(Ruby代码): if name =~ /ski$/ puts "#{name} is probably polish" end 如果要快速查询,可以使用=~操作符来返回匹配的结果.此外使用/pattern/syntax 形
-
Swift中动态调用实例方法介绍
在 Swift 中有一类很有意思的写法,可以让我们不直接使用实例来调用这个实例上的方法,而是通过类型取出这个类型的某个实例方法的签名,然后再通过传递实例来拿到实际需要调用的方法.比如我们有这样的定义: 复制代码 代码如下: class MyClass { func method(number: Int) -> Int { return number + 1 } } 想要调用 method 方法的话,最普通的使用方式是生成MyClass的实例,然后用.method来
-
Swift教程之枚举类型详解
枚举定义了一个常用的具有相关性的一组数据,并在你的代码中以一个安全的方式使用它们. 如果你熟悉C语言,你就会知道,C语言中的枚举指定相关名称为一组整数值.在Swift中枚举更为灵活,不必为枚举的每个成员提供一个值.如果一个值(被称为"原始"的值)被提供给每个枚举成员,则该值可以是一个字符串,一个字符,或者任何整数或浮点类型的值. 另外,枚举成员可以指定任何类型,每个成员都可以存储的不同的相关值,就像其他语言中使用集合或变体.你还可以定义一组通用的相关成员为一个枚举,每一种都有不同的一组
随机推荐
- AngularJS入门教程(一):静态模板
- js判断主流浏览器类型和版本号的简单实现代码
- .Net 如何限制用户登录的方法
- asp.net关于onpropertychange和oninput事件实现代码
- c#实现根据网络IP显示地理位置功能示例
- 使用php实现快钱支付功能(涉及到接口)
- Laravel中的Sessionid处理机制详解
- 在Html中使用Requirejs进行模块化开发实例详解
- 通过案例分析MySQL中令人头疼的Aborted告警
- php自定义扩展名获取函数示例
- 详解虚拟机下CentOS 6.5配置IP地址的三种方法
- C++实现raw_input的方法
- script_tool_for_linux.bash: Linux 环境下的 hosts 一键部署脚本
- 数据库表的查询操作(实验二)
- 前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
- vue实现商城购物车功能
- Ubuntu上mysql的安装及使用(通用版)
- PHP进阶学习之依赖注入与Ioc容器详解
- 详解mall整合SpringBoot+MyBatis搭建基本骨架
- 微信小程序实现购物车代码实例详解