本文主要是介绍Swift - Swift4新特性介绍1(Key Paths新语法、类与协议的组合类型) 原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/bl,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
http://www.hangge.com/blog/cache/detail_1823.html
一、Key Paths 新语法
key-path 通常是用在键值编码(KVC)与键值观察(KVO)上的,KVC、KVO 相关内容可以参考我之前写的这篇文章:Swift - 反射(Reflection)的介绍与使用样例(附KVC介绍)
1,Swift3 之前使用的是 String 类型的 key-Path
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
2,到了 Swift3 新增了 #keyPath() 写法
使用 #keyPath() 写法,可以避免我们因为拼写错误而引发问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
3,Swift4 中直接用 \ 作为开头创建 KeyPath
新的方式不仅使用更加简单,而且有如下优点:
- 类型可以定义为 class、struct
- 定义类型时无需加上 @objc 等关键字
- 性能更好
- 类型安全和类型推断,例如:user1.value(forKeyPath: #keyPath(User.name)) 返回的类型是 Any,user1[keyPath: \User.name] 直接返回 String 类型
- 可以在所有值类型上使用
(1)比如上面的样例在 Swift4 中可以这么写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
(2)keyPath 定义在外面也是可以的:
1 2 3 4 5 6 |
|
(3)可以使用 appending 方法向已定义的 Key Path 基础上填加新的 Key Path。
1 2 |
|
二、类与协议的组合类型
在 Swift4 中,可以把类(Class)和协议(Protocol)用 & 组合在一起作为一个类型使用。
使用样例1:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
具体错误信息如下:
使用样例2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_1823.html
这篇关于Swift - Swift4新特性介绍1(Key Paths新语法、类与协议的组合类型) 原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/bl的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!