排序
动画(四) – 过渡
以视图的插⼊和移除来设定动画,SwiftUI 将这些动画称为 过渡 (transition) 。 当我们使⽤动画来改变那些会导致视图插⼊或者移除的状态时,SwiftUI 会添加⼀个默认的 .opacity 过渡效果。 struc...
动画(二) – 控制动画
在 SwiftUI 中,有多种⽅式可以指定动画发⽣地时机 当某个特定的值改变时,触发隐式动画。 当某个特性事件发⽣时,触发显示动画。 动画类型 隐式动画 要指定隐式动画,可以在视图树的任意位置使...
语法(二) – 空合操作符
一个变量只有在确定有值的情况下才能被使用。另一种方法是使用 ! 显式地解除可选项。这也被称为 '崩溃操作符',因为如果在使用 ! 时将可选项设为 nil,那么程序将立即崩溃。 空合操作符 ??,允...
错误
错误基础知识 所有要抛出的错误都必须是符合Error协议的枚举。 enum PasswordError: Error { case empty case short } 错误可以添加关联值 enum PasswordError: Error { case empty case short ...
类型(五) – 集合
集合可以看作是无序数组,不能包含重复元素。如果多次添加相同的元素,它只会在集合中出现一次。 检查数组是否包含一个元素的复杂度为 O(n),这意味着 '这取决于数组中有多少个元素'。这是因为 ...
类型(四) – 字典
mapValues mapValues() 的方法更有用,因为它可以让你转换值,并使用原始键将它们放回字典。 let cities = ['Shanghai': 24_256_800, 'Karachi': 23_500_000, 'Beijing': 21_516_000, 'Seoul': ...
轻松解析 XML
开始解析 首先,我们将创建两个类来保存所有数据:一个名为 XMLNode 的类代表解析 XML 中的一个节点,另一个名为 MicroDOM 的类负责将 XML 实际解析为节点。XML 的本质是整个树最终由一个根节点...
类型(六) – 泛型
func inspect<T>(_ value: T) { print('Received \(type(of: value)) with the value \(value)') } inspect('Haters gonna hate') inspect(56) 限制泛型 func square<T: Numeric>(_...
引用类型和值类型
两者区别 布尔、数字、字符串、数组、字典、结构体等都是 Swift 中的值类型。类是引用类型,闭包也是引用类型。 引用类型在分配时是共享的,指向同一条数据,可以有多个所有者;值在分配时是复...