现在位置: 首页 > Swift 教程 > 正文

Swift 环境搭建

Swift是一门开源的编程语言,该语言用于开发 OS X和 iOS 应用程序。

在正式开发应用程序前,我们需要搭建 Swift 开发环境,以便更好友好的使用各种开发工具和语言进行快速应用开发。由于Swift开发环境需要在 OS X系统中运行,因此其环境的搭建将不同于 Windows 环境,下面就一起来学习一下swift开发环境的搭建方法。

成功搭建swift开发环境的前提:

  1. 必须拥有一台苹果电脑。因为集成开发环境 XCode 只能运行在 OS X 系统上。
  2. 电脑系统必须在 OS 10.9.3 及以上。
  3. 电脑必须安装 Xcode 集成开发环境。

安装 Xcode 16

在 macOS 上开发 Apple 平台应用,Xcode 是官方唯一的完整 IDE。

打开 App Store 搜索 Xcode 安装,或者到 developer.apple.com/xcode 下载安装包。

下载完成后,双击下载的 dmg 文件安装,安装完成后我们将 Xcode 图标移动到应用文件夹。

你也可以在 App Store 中搜索 xcode 安装,如下图所示:

Xcode 16 自带的 Swift 编译器是 6.x,支持 Swift 6 语言模式,也向下兼容 Swift 5 模式。

安装完成后第一次启动需要同意许可协议并安装额外组件,这一步会占用几分钟。

验证是否安装成功,在终端执行:

$ swift --version
swift-driver version: 1.148.6 Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101)
Target: arm64-apple-macosx26.0

只要能看到 Apple Swift version 和对应的目标平台,就说明工具链已经可用。

注意:Xcode 的命令行工具需要单独激活一次。如果提示找不到 swift 命令,执行 xcode-select --install 安装命令行工具,再执行 sudo xcode-select -s /Applications/Xcode.app 指定路径。


第一个 Swift 程序

Xcode 安装完成后,我们就可以开始编写 Swift 代码了。

接下来我们在应用文件夹打开 Xcode,打开后在屏幕顶部选择 File => New => Playground。

接着 为 playground 设置一个名字并选择 iOS 平台。

Swift 的 playground 就像是一个可交互的文档,它是用来练手学swift的,写一句代码出一行结果(右侧),可以实时查看代码结果,是学习swift语言的利器!

以下是 Swift Playground 窗口默认的代码:

import UIKit

var str = "Hello, playground"

如果你想创建 OS x 程序,需要导入 Cocoa 包 import Cocoa 代码如下所示:

import Cocoa

var str = "Hello, playground"

以上程序载入后,会在Playground 窗口右侧显示程序执行结果:

Hello, playground

至此,你已经完成了第一个 Swift 程序的学习,恭喜你入门了。


创建第一个项目

1、打开 xcode 工具,选择 File => New => Project

2、我们选择一个"Single View Application",并点击"next",创建一个简单示例app应用。

3、接着我们输入项目名称(ProductName),公司名称(Organization Name),公司标识前缀名(Organization identifier) 还要选择开发语言(Language),选择设备(Devices)。

其中Language有两个选项:Objective-c和swift,因为我们是学习swift当然选择swift项了。 点击"Next"下一步。

4、选择存放的目录,如果要使用Git源代码管理,将勾上Source Control的create git repository on My Mac. 点击create创建项目。

5、项目创建后,默认生成了一个示例文件,可以看到swift将oc中的h和m文件合并成了一个文件(即swift后缀名文件). Main.storyboard相当于xib文件,有比xib更多的功能。

6、打开main.storyboard,默认看到一个简单的空白的应用界面,大小为平板界面大小。 如果开发都只需要开发兼容iphone手机的app,那么可以把Use Auto Layout的勾去掉(默认为勾上)。

7、弹出了一个对话框,让我们选择界面尺寸,iPhone 或 iPad。我们选择iPhone的尺寸。

8、可以看到,界面大小变为了手机iphone的宽度和高度。

大家可以记住界面相关的尺寸,方便以后布局计算位置:

9.我们为界面添加点内容,在右下方找到Text控件,将它拖入storyboard上,并双击写入文本"Hello World!"。

运行一下模拟器(command+R 快捷键或在菜单栏中选择 Product => Run)。

至此,我们的第一个Swift项目就完成了。


新建一个 SwiftUI 项目

Xcode 16 新建项目时默认推荐 SwiftUI,它是 Apple 目前主推的声明式 UI 框架。

启动 Xcode,选择 File → New → Project,在 iOS 页签下选择 App,然后按下面填写。

选项建议值说明
Product NameRunoobDemo项目名称,同时作为模块名
Team个人账号或 None真机调试才必须选择
Organization Identifiercom.runoob反向域名,用于生成 Bundle ID
InterfaceSwiftUI另一个选项是 Storyboard
LanguageSwift另一个选项是 Objective-C

Interface 这一项决定项目用哪套 UI 框架,选错不会报错,但后续写法完全不同。

SwiftUI 用声明式的代码描述界面,界面随数据自动更新;Storyboard 用可视化拖拽加 XML 描述界面,再通过 IBOutlet 连接代码。

新项目建议选 SwiftUI,因为它是 Apple 当前的重点方向,新系统特性会优先在 SwiftUI 上提供。

创建完成后,Xcode 会自动生成 RunoobDemoApp.swiftContentView.swift 两个文件。

点击左上角的运行按钮,或者按 Command + R,模拟器就会启动并显示默认界面。


使用 Playground

Playground 是最适合练习语法的工具,输入代码后右侧会实时显示结果,不需要手动编译运行。

在 Xcode 中选择 File → New → Playground,选择 Blank 模板,保存到本地即可。

输入一行 print("RUNOOB"),右侧结果栏会立刻显示 RUNOOB

Playground 左侧还有两个特殊目录:

目录作用注意事项
Sources存放辅助代码与自定义类型这里的代码需要是 public 才能被主页调用
Resources存放图片、JSON、音频等资源Bundle.main 读取

Playground 也支持 import SwiftUI 后直接预览界面,适合快速试验 UI 效果。

注意:Playground 里顶层代码可以写表达式并自动显示结果,但用 swift 命令运行 .swift 文件时,普通表达式不会自动打印,必须显式调用 print


命令行运行

不打开 Xcode 也能运行 Swift,这在验证一小段代码时最快。

Swift 源码到运行的三条路径:Playground 实时结果、命令行 swift 直接运行或 swiftc 编译成可执行文件、SwiftPM 的 swift build 与 swift run,焦点为 swiftc 编译步骤

先用任意编辑器新建文件 hello.swift

实例

import Foundation

// 命令行程序的入口就是文件顶层的代码
let site = "RUNOOB"
print("Hello, \(site)!")

swift 命令直接运行源文件:

$ swift hello.swift
Hello, RUNOOB!

swift 命令会把文件当脚本执行,适合快速验证,但每次都要重新编译,不适合大型项目。

用 swiftc 编译成可执行文件

如果想把代码编译成独立的二进制文件,用 swiftc

$ swiftc hello.swift -o hello
$ ./hello
Hello, RUNOOB!

-o 指定输出文件名,生成的可执行文件可以直接分发给相同平台的其他机器。

编译出错时 swiftc 会给出精确到行列的错误信息,例如把字符串赋给 Int

$ swiftc bad.swift
bad.swift:1:14: error: cannot convert value of type 'String' to specified type 'Int'

用 swift repl 交互式输入

不带任何参数的 swift repl 会启动一个交互式环境,输入一行执行一行。

$ swift repl
Welcome to Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101).
Type :help for assistance.
  1> let site = "RUNOOB"
site: String = "RUNOOB"
  2> print(site)
RUNOOB
  3> :quit

REPL 会把表达式的值和推断出的类型一起打印出来,适合观察类型推断的结果。

输入 :quit 或者按 Control + D 退出。


Swift Package Manager 初体验

Swift Package Manager(简称 SwiftPM)是 Swift 官方的包管理与构建工具,Xcode 也内置了它。

新建一个可执行包,在空目录里执行:

$ swift package init --type executable
Creating executable package: demo
Creating Package.swift
Creating .gitignore
Creating Sources
Creating Sources/demo/demo.swift
Creating Tests/
Creating Tests/demoTests/
Creating Tests/demoTests/demoTests.swift

生成的目录结构是固定的,源文件必须放在 Sources 下,测试放在 Tests 下。

demo/
├── Package.swift
├── Sources/
│   └── demo/
│       └── demo.swift
└── Tests/
    └── demoTests/
        └── demoTests.swift

生成的 Package.swift 描述了包的名称、目标和语言模式:

实例

// swift-tools-version: 6.3
import PackageDescription

let package = Package(
    name: "demo",
    targets: [
        // 可执行目标:编译后产生一个命令行程序
        .executableTarget(
            name: "demo"
        ),
        // 测试目标:依赖主目标
        .testTarget(
            name: "demoTests",
            dependencies: ["demo"]
        ),
    ],
    // 使用 Swift 6 语言模式,开启严格并发检查
    swiftLanguageModes: [.v6]
)

默认生成的入口文件用 @main 标注结构体,这是 SwiftPM 可执行目标的推荐写法:

实例

// 文件路径:Sources/demo/demo.swift
@main
struct demo {
    static func main() {
        print("Hello, RUNOOB!")
    }
}

swift run 编译并运行:

$ swift run
Build of product 'demo' complete! (13.94s)
Hello, RUNOOB!

常用的三个命令是 swift build 只编译、swift run 编译并运行、swift test 运行测试。


Linux 与 Windows 上的 Swift

Swift 从 2015 年开源后逐步支持了 Linux 与 Windows,官方提供预编译工具链。

swift.org/install 可以下载各平台的安装包。

平台安装方式说明
Ubuntu官方 tarball 或 apt 源支持最完整的 Linux 发行版
其他 Linux官方 tarball需要自行安装依赖库
Windows官方安装程序需要 Visual Studio 组件支持

Linux 和 Windows 上没有 Xcode,也没有 UIKit、SwiftUI 这些 Apple 平台框架。

FoundationSwiftPMasync/await 这些核心能力都能正常使用,所以写服务端程序和命令行工具完全没问题。

注意:在 Linux 上 Foundation 由 swift-corelibs-foundation 实现,个别 API 与 Apple 平台存在差异,跨平台项目要避免依赖 Apple 专属的类型。


常见问题

下面整理环境搭建阶段最常遇到的几个问题。

提示 command not found: swift

说明命令行工具没有装好或路径没指定,执行 xcode-select --install 安装,再执行 sudo xcode-select -s /Applications/Xcode.app 指向正确的 Xcode。

swift 命令每次都要重新编译,能直接执行吗

swiftc 编译出可执行文件后,加上执行权限就能直接运行,也可以在脚本第一行写 #!/usr/bin/swift 把它当脚本执行。

Xcode 下载太慢怎么办

可以在 developer.apple.com/download/all 下载 xip 安装包,用下载工具加速,再手动安装。

Playground 一直转圈不出结果

通常是 Playground 卡在编译中,按 Command + B 手动触发一次构建,或者关闭后重新打开。

能否只装命令行工具而不装完整 Xcode

可以,xcode-select --install 会安装 Command Line Tools,里面包含 swiftswiftc,足以学习语法和写命令行程序,但没有 IDE 和模拟器。