2020年7月8日更新
如何在Playground中加載文件呢
// 從文件中加載數(shù)據(jù)
let path = "/Users/xx/Documents/我的案例/xx.txt"
let data = FileManager().contents(atPath: path)
let originalString = String(data: data!, encoding: .utf8)
最關(guān)鍵的是這個(gè)文件地址, 它是文件所在硬盤中實(shí)際的全地址. 這個(gè)地址不需要你費(fèi)勁去找, 直接把文件拖到 Playground 的代碼編輯區(qū), 地址會自動顯示
Swift Playground 首次公布于WWDC2016, 最開始是為了讓人人都能愉快的學(xué)習(xí) Swift 編程, 但發(fā)展至今, 這個(gè)工具越來越強(qiáng)大, 這里我分享幾個(gè)比較常用的功能.
這是我做的一個(gè)回歸分析可視化的UI.

在這張圖里, 我們可以知道
- 在 iOS / MacOS 的playground中, 我們可以導(dǎo)入對應(yīng)系統(tǒng)支持的庫文件, 還可以導(dǎo)入這種 Playground 獨(dú)有的框架, 比如
PlaygroundSupport, 用于界面可視化. - Playground 支持 MarkUp 語法, 這是一種類似 Markdown 的語法.
- 我們可以在playground 編寫任何符合 iOS / MacOS 的代碼, 包括各種動畫, 游戲等.
Playground 的左邊欄 - 文件區(qū)
當(dāng)我們創(chuàng)建完一個(gè) playground 后, 會自動創(chuàng)建一個(gè) Page , 這個(gè) Page 里包含兩個(gè)文件, 如果文件夾是空的, 圖標(biāo)是暗色的.
-
Sources: 存放當(dāng)前 Playground Page 的代碼. -
Resources: 資源文件, 包括圖片, 文件等資源.
如果我們想創(chuàng)建多個(gè) Playground Page, 在Xcode菜單欄, File -> New -> Playground Page, 就會創(chuàng)建一個(gè)新的 Page. 在運(yùn)行代碼時(shí), 每個(gè) Page 是分開的.
Playground 的中間欄 - 代碼編輯區(qū)
在每一個(gè) Page 中, 目前只能創(chuàng)建 Swift 文件, 代碼注釋沿用Markup 語法. 如果要開啟 Markup 顯示, 需要在 Xcode 的菜單欄, Editor -> Show Raw Markup(原始代碼, 無效果) / Show Rendered Markup (渲染后的效果)
單行注釋, 開啟單行markup
//: code
多行注釋
/*
code
*/
//: [上一頁](@previous)
//: [下一頁](@next) 上頁下頁的順序由你創(chuàng)建的 Page 順序決定, 它是可以調(diào)整的
//: [主頁](MainPage) 這里直接寫你創(chuàng)建的 Page 的名字
這下面的基本和 Markdown 語法一致
/*:
# 大大大
## 大大
### 大
* item1
* item2
> 標(biāo)題
# 分割線
---
## 鏈接
* [點(diǎn)我啊](http://www.baidu.com)
## Image

## 加粗
**code**
*/
注意: markup語法顯示只有在 playground 文件中有效, 在swift 文件中是沒用的
在控制臺, 我們可以選擇 手動運(yùn)行 / 自動運(yùn)行 Playground, 當(dāng)我們鼠標(biāo)靠近 ? / ?圖標(biāo)時(shí), 會出現(xiàn)一個(gè)小三角, 鼠標(biāo)左鍵長按, 就會出現(xiàn)選擇框進(jìn)行選擇.

Playground 的右邊欄 - 可視化區(qū)
這里的右邊欄是我們將視圖拆成兩個(gè)形成的.

選中要運(yùn)行的 Page, 點(diǎn)擊運(yùn)行 ?, 在右邊就能看到可視化界面. 注意: 如果你運(yùn)行代碼, 沒看到對應(yīng)的界面, 你得查看顯示的視圖是不是 Live View.

Playground 基本講完了, 我在使用的過程中, 遇到 Xcode 多次崩潰, 或者在自己建的子文件里代碼沒有提示, 目前Playground 還是需要優(yōu)化.
Playground 問題集錦
- 如果你新建一個(gè)類, 在主package 無法調(diào)用的話, 報(bào)如下錯(cuò)誤
由于“內(nèi)部”保護(hù)級別,初始化程序無法訪問
initializer is inaccessible due to 'internal' protection level
解決方法:
如果你沒有自定義初始化方法, 那么你需要在出錯(cuò)類中加入以下代碼, 將初始化方法暴露出來
public init() {}
參考:
Swift Playground精講
swift-summary 官方Swift語言教材的Playground總結(jié)版本。
Awesome-Swift-Playgrounds 優(yōu)秀的Playground列表