排序
引用类型和值类型
两者区别 布尔、数字、字符串、数组、字典、结构体等都是 Swift 中的值类型。类是引用类型,闭包也是引用类型。 引用类型在分配时是共享的,指向同一条数据,可以有多个所有者;值在分配时是复...
高级过渡
SwiftUI 的过渡系统允许我们自定义插入或移除视图的方式,可以在要过渡的视图周围插入一系列新视图、创建本地状态、添加复杂的动画等等。 本文创建的效果,如下所示 Twitter 点赞效果 添加新的...
解析复杂 JSON
在本文中,将向您展示如何以优雅的方式处理任何类型的 JSON,而无需依赖第三方库。 Codable 的不足之处 Swift 的 Codable 实现与魔法相去不远:如果您有完美的 JSON,那么您几乎不需要做任何工...
SwiftUI List 中多个按钮 button 同时触发
问题描述 在 list 中的一列中设置多个按钮会出现同时触发的问题 问题演示 解决方案 增设按钮的类型属性 .buttonStyle(.borderless),也可以选择其他的按钮类型。 Button('Add to Red') { redSco...
布局(八) – 坐标空间
Framework 为我们提供两种内置的坐标空间: 全局坐标空间 和 本地坐标空间,我们也可以定义⾃⼰的坐标空间。struct ContentView: View { var body: some View { VStack { Text('Hello') Text('Se...
函数与闭包
可变函数 可变函数是一种不确定迭代的函数,也就是你发送多少参数,它就接受多少参数。 func add(numbers: Int...) -> Int { var total = 0 for number in numbers { total += number } retu...
语法(一) – 模式匹配
Swift 的 switch 语句具有灵活却富有表现力的匹配模式。 基本使用 单值匹配 单值字符串匹配 let name = "twostraws" switch name { case "bilbo": print("Hello, Bilb...
类型(一) – 有用的初始化器
重复值 字符串或者数组的 repeating:count: 初始化器,可以快速创建大量值。 This is a heading ============== 具体的实现代码 let heading = 'This is a heading' let underline = String(rep...
类型(三) – 数组
排序 只要数组存储的元素类型采用了 Comparable 协议,就可以使用 sorted() 和sort() 方法,前者返回一个已排序的数组,后者修改数组。 var names = ['Taylor', 'Timothy', 'Tyler', 'Thomas', ...
类型(二) – 枚举
enum Color { case unknown case blue case green case pink case purple case red } 枚举的基本使用 struct Toy { let name: String let color: Color } let barbie = Toy(name: 'Barbie', col...