iOS开发入门:Swift基础知识讲解

今天也在重构
2025-12-15 10:59
阅读 691

大家好,我是团队里负责新人培训的讲师。过去五年,我带过上百名应届生从零开始走进移动开发的世界。今天写这篇教程,是因为每次看到新同学面对 Swift 一脸迷茫的样子,我就想起自己当初学的时候——连 print 都要查半天文档。别担心,代码人生从来不是一蹴而就的,而是一行一行敲出来的。

本篇教程将带你从零搭建环境、理解核心概念,并亲手完成一个简单的“区块链小账本”示例(别被“区块链”吓到,这里只是借用它的“链式记录”思想)。全程案例驱动,每一步都有可运行的代码。准备好了吗?我们出发!


一、Swift 是什么?能用来做什么?

Swift 是苹果公司在 2014 年推出的编程语言,专门用于开发 iOS、iPadOS、macOS 等苹果平台的应用。它语法简洁、安全高效,是目前 iOS 开发的官方主力语言

📌 小知识:你每天用的微信、抖音、支付宝 iOS 版,背后很大一部分代码就是用 Swift 写的。

虽然标题提到了“区块链”,但本文不会深入讲分布式账本或加密算法。我们只是借用“每一笔记录不可篡改、按顺序链接”的思想,做一个本地的小型记账 App,帮助你理解 Swift 的基础语法和逻辑结构。这也是我在培训中常用的实战经验——用生活化场景降低学习门槛。


二、环境准备:5 分钟搭好开发环境

所需工具

  • 一台 macOS 电脑(必须!Windows 无法开发 iOS 应用)
  • Xcode(苹果官方集成开发环境,免费)

安装步骤

  1. 打开 Mac 上的 App Store
  2. 搜索 “Xcode”
  3. 点击 “获取” 并安装(首次安装较大,约 8–10GB,请确保网络稳定)
  4. 安装完成后,打开 Xcode,首次启动会要求你同意协议并安装额外组件,按提示操作即可

💡 避坑指南:不要尝试在非 Mac 电脑上安装黑苹果或虚拟机跑 Xcode——对新手极不友好,且违反苹果许可协议。如果暂时没有 Mac,建议先学 Swift 基础语法(可用在线编译器),等有条件再实操。


三、Swift 核心概念:用最简单的话讲清楚

1. 变量与常量:存储数据的容器

  • var:变量,值可以改变
  • let:常量,值一旦设定就不能变(推荐优先使用)
var userName = "小明"      // 可以改
userName = "小红"          // 合法

let birthYear = 2000       // 不能改
// birthYear = 2001        // ❌ 报错!

最佳实践:除非确定值会变,否则一律用 let。这能避免很多意外错误。

2. 数据类型:Swift 是强类型语言

常见类型:

类型 示例 说明
Int 42, -7 整数
Double 3.14, -0.001 小数(高精度)
String "Hello" 文本
Bool true, false 是/否

Swift 能自动推断类型,但你也可以显式声明:

let price: Double = 9.99
let isActive: Bool = true

3. 条件判断:让程序做选择

let score = 85

if score >= 60 {
    print("及格啦!")
} else {
    print("加油,下次一定!")
}

4. 循环:重复做事不手累

// 打印 1 到 5
for i in 1...5 {
    print("第 \(i) 次循环")
}

注意:\(i) 是字符串插值,能把变量值插入字符串中。

5. 函数:封装可复用的代码块

func sayHello(to name: String) -> String {
    return "你好,\(name)!"
}

let greeting = sayHello(to: "小张")
print(greeting) // 输出:你好,小张!
  • func 定义函数
  • -> String 表示返回一个字符串
  • 调用时必须传入参数

四、实战项目:做一个“区块链小账本”

我们现在用上面的知识,做一个能记录收支的小程序。每条记录包含金额、备注和时间,并按顺序保存——就像一条“链”。

第一步:定义一条记录(用结构体)

import Foundation // 用于获取当前时间

struct Transaction {
    let amount: Double   // 金额(正为收入,负为支出)
    let note: String     // 备注
    let timestamp: Date  // 时间
    
    init(amount: Double, note: String) {
        self.amount = amount
        self.note = note
        self.timestamp = Date() // 自动记录当前时间
    }
}

📝 解释struct 是 Swift 中定义“数据模型”的常用方式,比类更轻量。

第二步:创建账本(用数组存储记录)

var ledger: [Transaction] = [] // 空数组,准备存记录

第三步:添加几笔交易

ledger.append(Transaction(amount: 100, note: "工资"))
ledger.append(Transaction(amount: -30, note: "买咖啡"))
ledger.append(Transaction(amount: -15, note: "地铁票"))

第四步:计算余额并打印明细

func calculateBalance() -> Double {
    var total: Double = 0
    for tx in ledger {
        total += tx.amount
    }
    return total
}

func printLedger() {
    print("=== 我的账本 ===")
    for (index, tx) in ledger.enumerated() {
        let sign = tx.amount >= 0 ? "+" : ""
        let formattedAmount = String(format: "%.2f", tx.amount)
        let timeStr = tx.timestamp.description(with: .current)
        print("\(index + 1). \(sign)\(formattedAmount) 元 | \(tx.note) | \(timeStr)")
    }
    print("当前余额:\(calculateBalance()) 元")
}

// 调用
printLedger()

运行结果(示例):

=== 我的账本 ===
1. +100.00 元 | 工资 | Jul 10, 2024 at 10:30:45 AM China Standard Time
2. -30.00 元 | 买咖啡 | Jul 10, 2024 at 10:30:45 AM China Standard Time
3. -15.00 元 | 地铁票 | Jul 10, 2024 at 10:30:45 AM China Standard Time
当前余额:55.0 元

🔗 为什么叫“区块链”小账本
因为我们每加一条记录,就追加到数组末尾,形成一条不可逆的时间链。虽然没用到真正的加密哈希,但体现了“顺序记录、不可删除”的核心思想。这也是我在技术分享中常做的简化类比。


五、新手常见问题解答(FAQ)

Q1:Xcode 打不开,提示“需要登录 Apple ID”?

A:首次使用某些功能(如模拟器)确实需要 Apple ID,但开发普通 App 不强制。你可以跳过,或注册一个免费 Apple ID。

Q2:letvar 到底怎么选?

A:记住口诀:“能用 let 就不用 var”。只有当你明确知道这个值后面会变(比如循环计数器、用户输入),才用 var

Q3:为什么我的 print 中文显示乱码?

A:Swift 对中文支持很好,乱码通常是终端编码问题。确保你在 Xcode 的控制台(Console)查看输出,而不是外部终端。

Q4:如何调试代码?

A:在行号左侧单击设置断点(出现蓝色箭头),然后运行。程序会在该行暂停,你可以在底部查看变量值。

Q5:学完这些能做什么?

A:你可以继续学习 UIKit 或 SwiftUI(做界面),把今天的账本做成图形界面 App!下一步我们就该学“如何把代码变成用户看得见的按钮和列表”。


六、学习建议:你的代码人生才刚刚开始

  1. 每天敲代码:哪怕只写 10 行。我当初学的时候,坚持每天写一个小函数,三个月后就能独立做简单 App。
  2. 不要死记语法:Swift 的设计哲学是“像读英语一样读代码”。多读、多模仿,自然就熟了。
  3. 善用 Playground:Xcode 自带的 Swift Playground 是绝佳的练习场,无需创建完整项目就能试代码。
  4. 下一步学什么
    • 学 SwiftUI:苹果新一代 UI 框架,声明式语法,上手快
    • 做一个待办事项 App:结合今天的数据结构 + 简单界面
    • 了解 MVC 架构:理解 App 的组织方式

最后送大家一句话:每一个复杂的 App,都是从 print("Hello, World!") 开始的。你的代码人生,从此刻这一行开始书写。


希望这篇教程能成为你 iOS 开发之路的第一块垫脚石。如果你在练习中遇到问题,欢迎留言交流——毕竟,技术分享的意义,就在于让更多人少走弯路。加油!

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝