Swift3.0-KVC构造函数与基本数据类型
来源:互联网 发布:身份证假软件下载 编辑:程序博客网 时间:2024/06/05 06:44
0.创建一个类:Person.swift
//name属性是可选的,在需要的时候创建//在手机开发中,内存非常宝贵,实际运行中很多属性不一定需要分配空间var name: String?
1.重写构造函数,用字典为本类设置初始值
init(dict: [String: AnyObject]) { super.init() //使用 self 的方法 'setValuesForKeys' 之前,应该调用 super.initt(),否则会奔溃:Use of 'self' in method call 'setValuesForKeys' before super.init initializes self //KVC方法是 OC 的方法,在运行的时候给对象发送消息 //执行'setValuesForKeys',首先要求对象已经实例化完成 setValuesForKeys(dict)}
1.1然在控制器中传值调用
let p = Student(dict: ["name": "小明" as AnyObject])print(p.name)//打印输出: Optional("小明")
2.在Person.swift中继续追加一个属性
//给基本类型属性初始化//如果这样写://var age: Int?//会抛出以下异常://Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<******> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key age.'// - 意思是KVC会无法找到age的KEY,因为Int是一个基本数据类型的结构体//所以要这么写,赋初始值 var age: Int = 0
2.1去控制器中传值调用
let p = Student(dict: ["name": "小明" as AnyObject,"age": 18 as AnyObject])print("\(p.name) \(p.age)")//打印输出: Optional("小明") 18
3.试图在Person.swift添加一个私有的属性
//private var title: String?//直接报异常:Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<****** > setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key title.// - 如果是private属性,使用KVC设置的时候,程序会直接崩溃// - Swift中被Private修饰的属性或方法,彻底禁止外部访问,OC中私有属性或者方法可以通过runtime访问到,所以此时无法使用private修饰var title: String?
3.1在控制器中打印输出
let p = Student(dict: ["name": "小明" as AnyObject,"age": 18 as AnyObject,"title": "北京" as AnyObject])print("\(p.name) \(p.age) \(p.title)")//打印输出: Optional("小明") 18 Optional("北京")
总结:
1. 定义属性的时候,如果是对象,通常都是可选的(类后面加’?’)
- 在需要的时候创建
- 避免写构造函数,可以简化代码
2. 如果是基本数据类型,不能设置为可选的,而且要设置初始值,否则KVC崩溃
3. 若果需要使用KVC设置属性,属性不能是private的
4. 使用KVC方法之前,应该调用 super.init 保证对象实例化完成
0 0
- Swift3.0-KVC构造函数与基本数据类型
- swift3.0 基本数据类型
- Swift3.0 -- 构造函数
- Swift3.0教程(二)-基本数据类型
- KVC构造函数
- KVC构造函数注意点
- Matlab----基本函数与数据类型
- CoreGraphics基本数据类型与函数
- iOS 基本数据类型与函数
- Swift 4.构造函数-KVC构造
- KVC 与 KVO 基本了解
- swift3.0函数
- Swift3.0之String转换成基本数据类型 Int CGFloat Double
- swift3.0 基本运算符
- Swift3.0基本语法02
- Swift3.0基本语法01
- Swift3.0基本语法02
- Swift3.0 Any数据类型转Json
- 结合Scikit-learn介绍几种常用的特征选择方法
- caffe源码阅读1:caffe.proto解析
- 动态代码修改xib约束
- Tutorial: 371. Sum of Two Integers
- 关于OC中的Block使用以及ARC和MAR下的内存管理方式
- Swift3.0-KVC构造函数与基本数据类型
- 用KAOS进行目标建模
- Android中的IPC方式
- 常见Python运行时报错整理
- TCP循环服务器 代码tcpser
- python笔记(十一)
- jquery插入元素的几种方法 insertBefore() insertAfter() prependTo() appendTo()
- centos6.5部署owncloud(私有云)
- ThreadLocal 和 Thread同步机制的比较