全新Swift从入门到进阶实战探探iOS APP「慕FX」

全新Swift从入门到进阶实战探探iOS APP

核心代码,注释必读

// download:ukoou.com/resource/1630

Swift介绍 Swift是Apple在2014年6月WWDC发布的全新编程语言,中文名和logo是"雨燕" Swift之父Chris Lattner Clang编译器作者、LLVM项目的主要发起人 从Apple离职后,先后跳槽到Tesla、Google 目前在Google Brain从事AI研究

Swift编译流程 Swift Code --> Swift AST --> Raw Swift IL --> Canonical Swift IL --> LLVM IR --> Assembly --> Executable

swiftc swiftc存放在Xcode内部 Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin 一些操作 生成语法树:swiftc -dump-ast main.swift 生成最简洁的SIL代码:swiftc -emit-sil main.swift 生成LLVM IR代码: swiftc -emit-ir main.swift -o main.ll 生成汇编代码: swiftc -emit-assembly main.swift -o main.s 对汇编代码进行分析,可以真正掌握编程语言的本质

全新Swift基础语法介绍

常量与变量

在Swift中规定,定义一个标识符的时候必须明确说明该标识符是常量还是变量:

使用let来定义常量,定义之后不可修改;

使用var来定义变量,定义之后可以修改。

kotlin 复制代码
let a: Int = 2a = 3//会报错,因为a是常量,不可以修改
var b: Int = 6b = 8//正常运行,b是变量,可以修改

复制

基本数据类型

Swift中的基本数据类型包括:整型、浮点型、Bool型

整型

有符号整型

Int8:有符号8位整型

Int16:有符号16位整型

Int32:有符号32位整型

Int64:有符号64位整型

Int:默认,和平台相关,相当于OC中的NSInteger

无符号整型

UInt8:无符号8位整型

UInt16:无符号16位整型

UInt32:无符号32位整型

UInt64:无符号64位整型

UInt:默认,和平台相关,相当于OC中的NSUInteger

浮点型

Float:32位浮点型

Double:64位浮点型(默认)

Bool型

true:真

false:假

全新Swift从入门到进阶实战探探iOS APP - SwiftUI

首先,确保你的 Mac 上安装了最新版本的 Xcode,并且你已经创建了一个新的 SwiftUI 应用程序项目。

1. 创建数据模型

在你的项目中创建一个新的 Swift 文件,命名为 TodoItem.swift,并定义待办事项的数据模型:

swift 复制代码
import Foundation

struct TodoItem: Identifiable {
    let id: UUID
    var name: String
    var isCompleted: Bool = false
    
    init(name: String) {
        self.id = UUID()
        self.name = name
    }
}

2. 创建视图以显示待办事项列表

创建一个新的 SwiftUI 视图文件,命名为 TodoListView.swift

swift 复制代码
import SwiftUI

struct TodoListView: View {
    @State private var todos = [TodoItem]() // 存储待办事项的数组
    @State private var showingAddTodo = false // 添加待办事项视图的状态
    
    var body: some View {
        NavigationView {
            List {
                ForEach(todos) { todo in
                    HStack {
                        Image(systemName: todo.isCompleted ? "checkmark.circle.fill" : "circle")
                        Text(todo.name)
                        Spacer()
                    }
                    .contentShape(Rectangle()) // 使整个行可点击
                    .onTapGesture {
                        // 点击时切换完成状态
                        todo.isCompleted.toggle()
                    }
                }
                .onDelete: { index in
                    // 删除选中的待办事项
                    self.todos.remove(at: index)
                }
            }
            .navigationBarTitle("Todo List")
            .navigationBarItems(trailing: Button(action: {
                self.showingAddTodo = true
            }) {
                Image(systemName: "plus")
            })
            .sheet(isPresented: $showingAddTodo) {
                // 添加待办事项的表单视图
                AddTodoView(todos: self.$todos)
            }
        }
    }
}

3. 创建添加待办事项的表单视图

创建一个新的 SwiftUI 视图文件,命名为 AddTodoView.swift

swift 复制代码
import SwiftUI

struct AddTodoView: View {
    @Binding var todos: [TodoItem] // 绑定到待办事项数组的引用
    
    var body: some View {
        NavigationView {
            Form {
                Section(header: Text("Add a new todo")) {
                    TextField("Todo name", text: Binding(
                        get: { self.todos.first?.name ?? "" },
                        set: { _ in }
                    ))
                    .textInputAutocapitalization(.words)
                    .disableAutocorrect(true)
                    .onAppear {
                        if self.todos.isEmpty {
                            self.todos.append(TodoItem(name: ""))
                        }
                    }
                }
                Section {
                    Button(action: {
                        // 添加新的待办事项
                        if let todoName = self.todos.first?.name, !todoName.isEmpty {
                            self.todos.first?.name = todoName.trimmingCharacters(in: .whitespacesAndNewlines)
                            self.todos.append(TodoItem(name: ""))
                        } else {
                            self.todos.removeFirst()
                        }
                        self.todos.removeAll { $0.name.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty }
                        self.todos.sort { $0.name < $1.name }
                        self.todos[0].name = "" // 清空第一个待办事项的文本字段
                    })
                    {
                        Text("Add")
                    }
                    .padding()
                }
            }
            .navigationBarTitle("Add Todo")
            .navigationBarItems(trailing: Button(action: {
                self.todos.removeFirst() // 关闭表单时清空文本字段
            }) {
                Text("Cancel")
            })
        }
    }
}

4. 设置主视图

在你的 ContentView.swift 文件中,设置应用程序的主视图:

swift 复制代码
import SwiftUI

struct ContentView: View {
    var body: some View {
        TodoListView()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

5. 运行应用程序

现在,你可以运行你的 SwiftUI 应用程序了。在 Xcode 中,选择你的设备或模拟器,然后点击运行按钮。你应该会看到一个简单的待办事项列表应用程序,你可以添加新的待办事项、查看它们,并标记为已完成。

这个示例展示了 SwiftUI 的基本用法,包括状态管理、数据绑定、列表渲染、表单创建和导航。通过这个实战项目,你可以开始探索 SwiftUI 的更多高级特性和功能。

相关推荐
开心就好20259 小时前
iOS App 安全加固流程记录,代码、资源与安装包保护
后端·ios
开心就好20259 小时前
iOS App 性能测试工具怎么选?使用克魔助手(Keymob)结合 Instruments 完成
后端·ios
zhongjiahao1 天前
面试常问的 RunLoop,到底在Loop什么?
ios
wvy2 天前
iOS 26手势返回到根页面时TabBar的动效问题
ios
RickeyBoy3 天前
iOS 图片取色完全指南:从像素格式到工程实践
ios
aiopencode3 天前
使用 Ipa Guard 命令行版本将 IPA 混淆接入自动化流程
后端·ios
二流小码农3 天前
鸿蒙开发:路由组件升级,支持页面一键创建
android·ios·harmonyos
iceiceiceice4 天前
iOS PDF阅读器段评实现:如何从 PDFSelection 精准还原一个自然段
前端·人工智能·ios
ssshooter5 天前
Tauri 踩坑 appLink 修改后闪退
前端·ios·rust
二流小码农5 天前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos