Home 寫程式[iOS] Xcode Preview trouble shootings

[iOS] Xcode Preview trouble shootings

by 艾普利

自從開始使用 SwiftUI 後,Xcode 內的 Preview 就變得非常重要,且它本身也是非常好用的東西,可以即時顯示 UI的樣式,大多數的情況下,可以說是完全反應結果,真的很好用。

但是在某些情況下就是無法顯示出來,會讓人覺得很煩燥,有一種解決方式是把 Perviews simulator 刪除,讓它自動重新再產生。

有不少人覺得Preview 不好用,主要有幾個理由:如果不是 M系列 CPU 根本很難出現、電腦會變慢、三步五十就壞掉…等等。我自己剛開始在用的時候,也常常不知道為什麼它會跑不出來或是壞掉,簡單去研究一下才知道一些事情,也大概知道為什麼會這樣。

如果你的 Xcode 也常常Preview 上一秒還可以用下一秒就跑不出來的話,接下來要說的方法,說不定可以解決你的煩惱!

認識一下 Xcode Preview

在使用 SwiftUI 時,Xcode 畫面右邊這區就是 Preview畫面出現的地方,在 Xcode 裡是叫 Canvas,它是用來呈現寫在 #Preview 裡的程式碼,雖然不知道是不是大家都這樣,但我習慣叫它Preview 而不是 Canvas。實際上它也是把模擬器跑起來,所以若不是使用Apple 的 M 系列核心,會很難跑起來…

Preview的一些問題

Preview 算是可以即時顯示出程式碼修改後的結果,是真的很方便,但是有時候也是會跑不出來,當然語法寫錯或是有些資料沒有給它(Preview 使用到得資料需要寫在 #Preview 裡,它是獨立的),就無法顯示出來。這樣的問題可以檢查一下基本上就可以解決了,但有時候就是明明沒什麼問題,但一直轉半天畫面都沒有出現。

在個人經驗裡有二個情況比較容易發生

  • 在二、三個專案中切換
  • 在不同的Git branch 中切換

實作過程中難免會需要在不同的專案或不同的 Branch 中切換,就可能會遇到上一秒還顯示出現,下一秒就顯示不出來情況。

解決方式

如果是在同一個專案發生這個情況可以先試試 Clear Build + Delete DerivedData ,也許就可以解決這個問題,但如果怎麼樣都無法解決的話,可以試試下面方式。

順便提一下,想刪除 DerivedData 可以從下圖開啟資料夾,再把資料夾裡的東西全丟到垃圾筒即可

剛剛有說到,其實Preview 也是跑模擬器,所以直接全部刪除讓它們重新產生,就和Delete DerivedData 的作法差不多,因為不確定到底是什麼問題就直接全刪,和「重開機治百病」一樣的感覺 🙂

首先,開啟Terminal,不需要移動到其他位置,然後輸入以下指令

xcrun simctl --set previews delete unavailable

會需要跑一點點時間,跑完之後會出現以下文字

Using Previews Device Set: '/Users/userName/Library/Developer/Xcode/UserData/Previews/Simulator Devices'

這樣當你重新開啟 Xcode 之後,Preview 的模擬器就會再重新Create,這樣也許可以解決 Preview 轉半天沒有出現的情況。

希望這個方式能有幫助~

最後,祝大家 Coding 愉快!!

You may also like