如何快速学习和测试 Swift 和 UIKit 代码？

我的基础背景

我是一名普通前端，之前并没有学习过 iOS 开发，有时候我需要实现 Swift 代码，包装为插件，在 app 中调用原生功能。

在 uni-app x 的 4.25 支持原生混编之后，可以做的事情就更多了。

举个例子，比如我希望封装一个函数，获取当前手机的电量，或者获取当前系统的主题是否暗黑、获取按钮时候播放一段音乐。

JS Web 开发一样很容易测试，打开浏览器随便打开一个网页，按下 F12 打开控制台，就可以运行 JS 并得到响应。客户端原生开发并不可以。

所以，我该如何尽可能少地学习无关知识，让我快速测试和实验 UIKit 和 Swift 代码？

本篇文章记录我的学习过程，面向读者是和我一样的纯前端、客户端开发无知者。如果后续有更深入的理解，我会尝试修改其中的细节。也请读者请注意甄别。

代码从哪里来？

以前我推荐快速阅读官方文档，了解大纲后再进行测试练习。现在有了 AI，更适合问 AI，比如

如何使用 UIKit 获取当前电量，我希望编写一个 fun 返回结果。我可以调用 fun 并 print 结果。

知道了如何获取代码，如何进行测试？考虑到我现阶段不需要考虑系统性地掌握 xcode 的使用。这就引出了下面的话题。

快速测试 UIKit？

如何快速学习 UIKit 和 Swift？

经过我的探索，我找了两个方案来测试：创建普通项目和使用 playground。下面分别说一说。

以下方案基于 XCode 15.4 进行截图说明，随着版本迭代，部分截图可能会发生变化，但预计不会发生大的变化。

1 创建普通项目

基础模板搭建

打开 xcode，选择创建新的工程，弹出下面对话框。

注意：顶部平台选择 iOS，不要选择默认的 Multiplaform 跨平台

点击 Next，得到下面的对话框

提示：

Product Name 随便起一个名字

Team 随便选，我选择了 None

Org ID 这里，默认，或者随便的 a.b.c 的格式就可以

Interface 这里试了试，选择 Storyboard，不选择 SwiftUI

Language 选择 Swift

Storage 选择 None

取消勾选 Include Tests

点击 Next，会出现下面弹窗，让你选择代码存放路径

最终选择 Create 就完成了一个普通项目的创建。

测试 demo 代码

有了项目，我们就可以测试 swift 代码块了。

按照我的上图提示，打开 ViewController.swift 全部删除，粘贴我提供的代码。

Copy
import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

// 获取电量并打印·
let currentBatteryLevel = getBatteryLevel()
print("当前电量: \(currentBatteryLevel)%")
}

func getBatteryLevel() -> Float {
// 开启电池监测
UIDevice.current.isBatteryMonitoringEnabled = true

// 获取当前电量
let batteryLevel = UIDevice.current.batteryLevel
// 转换为百分比
return batteryLevel * 100
}
}

这个代码会在应用启动之后，调用 getBatterLevel() 方法并打印结果到控制台。

这个代码会获取电量，并返回数据。

粘贴完毕，在顶部选择模拟器，然后点击运行，稍等片刻，可以在控制台看到返回结果。

以上就是普通项目的测试方案，这种方案虽然稍微复杂，但是比较规整，属于最常见的模板。

下面介绍一种，我问 ai 知道的简单方案。

2 创建 Playground 项目

xcode 选择创建 playground，不知道为啥，默认的创建工程里没有这个模板。

基础模板搭建

必须使用下面的方案：

打开 xcode 这个启动页面

左上角选择 File - New - Playground...

出现下面的截图，选择默认的 iOS - Blank。

点击 Next 就可以出现代码存放位置了。工程后缀文件 .playground，比较简单。

测试 demo 代码

点击图片中的运行，就可以得到这段代码的运行结果了。

你可以复制我提供的代码进行验证

Copy
import UIKit

func getBatteryLevel() -> Float {
// 开启电池监测
UIDevice.current.isBatteryMonitoringEnabled = true

// 获取当前电量
let batteryLevel = UIDevice.current.batteryLevel
// 转换为百分比
return batteryLevel * 100
}

// 获取电量并打印·
let currentBatteryLevel = getBatteryLevel()
print("当前电量: \(currentBatteryLevel)%")

下一步做什么？

系统学习官方文档

官网文档关于 UIDevice.current.batteryLevel 的介绍

路径是：App and environment - UIDevice - Getting the device battery state - batteryLevel。

batteryLevel | Apple Developer Documentation

问 Ai 如何获取暗黑模式等其他问题

询问 AI

使用 swift 和 UIKit 查询当前系统的主题，是否是暗黑模式，封装成 fun，返回当前是 light 还是 dark，还有其他值吗？

经过我测试，ok。这里读者可以自行测试。可以有意识地积累代码了，后面可以随手拿来用。

学习 UTS 插件包装

[[新手向：包装 UTS 插件]]

学习 Android 如何快速测试代码

[[如何快速学习和测试 Android Kotlin 代码？]]