写给新手的Swift语法从入门到进阶指南

高军☆
2026-06-10 22:52
阅读 2300

哈喽各位小伙伴大家好,我是你们的老朋友,一个在大厂敲了3年代码、业余在B站给大家做技术分享的iOS UP主。最近后台收到很多粉丝私信,说想转行或者业余学习iOS开发,但面对各种教程不知道从哪下手。我当初学的时候也是对着厚厚的英文文档发愁,踩了无数坑。所以今天,我特意以讲师的视角,为大家整理了这篇面向完全零基础小白的Swift入门教程。

Swift是苹果推出的一门现代、安全、快速的编程语言,主要用于开发iOS、macOS等苹果生态的应用。它的语法非常优雅,能帮你避开很多C语言时代的底层内存陷阱。接下来,我们将以“问题解决”的思路,一步步揭开Swift的面纱。

环境准备:工欲善其事必先利其器

学习Swift,你首先需要一台Mac电脑(这是硬性要求哦)。开发环境我们直接使用苹果官方的Xcode。

详细搭建步骤:

  1. 打开Mac上的 App Store,搜索“Xcode”并下载安装(体积较大,请耐心等待)。
  2. 安装完成后打开Xcode,在欢迎界面选择“Get started with a playground”。
  3. 选择“Blank”模板,命名为“SwiftBasics”,点击Next保存到桌面。

Playground(游乐场)是Swift学习的神器,它支持“所见即所得”,你写下一行代码,右侧或下方会立刻显示运行结果,非常适合零基础新手验证语法。

核心概念:用大白话理解Swift

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

在Swift中,数据容器分为两种:可变和不可变。

  • var:变量,里面的值可以修改。
  • let:常量,一旦赋值就不能再改(强烈建议:默认全用let,需要修改时再改var,这是大厂代码规范)。
var userScore = 100      // 变量,分数可以变
userScore = 120          // 合法

let maxScore = 150       // 常量,最高分固定
// maxScore = 200        // 报错!常量不能修改

2. 基本数据类型与集合

Swift是强类型语言,但它的类型推断非常聪明。

// 基本类型
let appName: String = "我的第一个App"
let version: Double = 1.0
let isPaid: Bool = false

// 数组(有序集合)
// 假设我们在做AI绘画,这里存储Stable Diffusion的提示词
let sdPrompts: [String] = ["赛博朋克", "高清", "8k分辨率"]

// 字典(键值对集合)
let aiConfig: [String: String] = ["model": "Qwen", "type": "大语言模型"]

3. 控制流:让代码有逻辑

使用 if-elseswitch 来做条件判断,使用 for-in 来循环。

let temperature = 25

if temperature > 30 {
    print("太热了,开空调")
} else {
    print("温度适宜")
}

// Swift的switch非常强大,不需要写break,且支持区间匹配
switch temperature {
case 0..<15:
    print("有点冷")
case 15..<28:
    print("很舒服")
default:
    print("有点热")
}

4. 函数:代码的积木

函数用于封装一段可重复使用的逻辑。

// 定义一个计算BMI的函数
func calculateBMI(weight: Double, height: Double) -> Double {
    return weight / (height * height)
}

let myBMI = calculateBMI(weight: 70, height: 1.75)
print("我的BMI是:\(myBMI)")

5. 可选型(Optional):Swift的灵魂

我当初学的时候,最头疼的就是Optional。简单来说,一个变量如果是Optional类型,意味着它可能有值,也可能是nil(空)。这从根本上解决了其他语言中臭名昭著的“空指针异常”。

var phoneNumber: String? = "13800138000"
phoneNumber = nil // 合法,因为它带了问号?

// 如何安全取值?使用 if let 解包
if let realNumber = phoneNumber {
    print("电话号码是:\(realNumber)")
} else {
    print("电话号码为空")
}

实战项目:AI智能体提示词管理器

光看不练假把式。接下来我们写一个实战小项目。现在AI非常火,很多同学在研究智能体开发,我们就用Swift写一个“AI智能体提示词管理器”,顺便把几个热门AI概念融入进去。

项目需求: 创建一个管理器,能够存储和获取不同AI模型(如通义千问Qwen等)以及图像模型(如Stable Diffusion)的专属提示词。

执行逻辑流程图: [开始] -> [初始化提示词管理器] -> [添加Stable Diffusion提示词] -> [添加通义千问/Qwen提示词] -> [遍历打印所有提示词] -> [结束]

完整代码实现:

import Foundation

// 1. 定义一个结构体来存储单条提示词
struct Prompt {
    let modelType: String
    let content: String
}

// 2. 定义提示词管理器类
class PromptManager {
    // 使用字典存储,key是模型名,value是提示词数组
    private var promptsDict: [String: [Prompt]] = [:]
    
    // 添加提示词的方法
    func addPrompt(model: String, content: String) {
        let newPrompt = Prompt(modelType: model, content: content)
        if promptsDict[model] != nil {
            promptsDict[model]?.append(newPrompt)
        } else {
            promptsDict[model] = [newPrompt]
        }
    }
    
    // 获取并打印指定模型的提示词
    func printPrompts(for model: String) {
        // 使用 guard let 进行安全解包,如果为空直接return
        guard let modelPrompts = promptsDict[model] else {
            print("没有找到 \(model) 的提示词记录。")
            return
        }
        
        print("--- \(model) 的提示词列表 ---")
        for prompt in modelPrompts {
            print(">> \(prompt.content)")
        }
        print("------------------------")
    }
}

// 3. 实战运行
let manager = PromptManager()

// 添加 Stable Diffusion 的绘画提示词
manager.addPrompt(model: "Stable Diffusion", content: "masterpiece, best quality, cyberpunk city")
manager.addPrompt(model: "Stable Diffusion", content: "cute cat, highly detailed, 8k")

// 添加 通义千问 / Qwen 的对话系统提示词
manager.addPrompt(model: "Qwen", content: "你是一个专业的iOS开发助手,精通Swift语法。")
manager.addPrompt(model: "通义千问", content: "请帮我优化这段Swift代码的性能。")

// 打印结果
manager.printPrompts(for: "Stable Diffusion")
manager.printPrompts(for: "Qwen")
manager.printPrompts(for: "Midjourney") // 测试不存在的模型

把这段代码复制到你的Playground里运行,看看右侧的控制台输出吧!通过这个项目,你不仅练习了类、结构体、字典和可选型,还顺便了解了目前主流的AI工具概念。

常见问题:新手避坑指南

在我带过的学生中,新手最容易在以下几个地方栽跟头:

Q1:为什么我的程序突然崩溃了,报 Fatal error: Unexpectedly found nil A: 这是你使用了强制解包(!)。当你确定一个Optional变量一定有值时,可以用 ! 取值,但如果它其实是nil,程序就会直接崩溃。避坑指南:永远优先使用 if letguard let??(空合运算符)来安全处理可选型。

Q2:结构体(Struct)和类(Class)到底该用哪个? A: 这是Swift面试必考题。简单来说,Struct是值类型(赋值时会复制一份),Class是引用类型(赋值时传递的是内存地址)。

对比维度 结构体 (Struct) 类 (Class)
类型 值类型 引用类型
继承 不支持继承 支持继承
内存分配 栈区(速度快) 堆区(需垃圾回收)
使用场景 默认首选,适合轻量级数据模型 需要共享状态、继承或使用Delegates时

讲师建议:在Swift中,默认优先使用Struct,只有当你的需求明确需要引用语义或继承时,才使用Class。

学习建议:下一步该怎么走?

恭喜你!看完这篇教程并敲完代码,你已经正式跨入了Swift的大门。对于接下来的学习,我有几点建议:

  1. 肌肉记忆大于死记硬背:不要只看视频,一定要自己动手敲代码。哪怕是抄写,也要在Playground里跑出结果。
  2. 拥抱AI辅助学习:现在学习编程比以前幸福多了。遇到不懂的语法报错,或者想优化代码逻辑,你可以直接去问通义千问或者Qwen大模型。它们对代码的理解能力极强,能给你提供非常清晰的解释和修改建议。
  3. 拓展技术视野:当你掌握了Swift基础后,可以尝试用SwiftUI构建漂亮的UI界面。如果你对AI感兴趣,还可以尝试用Swift调用API,结合Stable Diffusion做一款属于自己的AI绘画Mac端小工具,或者研究一下基于大模型的智能体开发,把AI能力集成到你的iOS App中,这将会是你简历上非常亮眼的项目。

编程是一场马拉松,刚开始的语法阶段可能会有些枯燥,但当你亲手做出第一个能在手机上运行的App时,那种成就感是无与伦比的。我是你们的大厂iOS UP主,我们下期B站视频见,祝大家Coding愉快!

评论 0

最热最新
暂无评论
高军☆Lv.1
0
影响力
0
文章
0
粉丝