Swift條件語句:`switch`

本教程屬於Swift系列教程 switch語句是一種方便的條件語句,用於處理多種情況: var name = "Roger" switch name { case "Roger": print("你好,Roger先生!") default: print("你好,\(name)") } 當一個case語句結束後,switch會自動退出。 在Swift中,switch語句需要包含所有的情況。如果變量name是一個可以有任何值的字符串,我們需要添加一個必須的default情況。 對於枚舉類型,你可以簡單地列舉所有的選項: enum Animal { case dog case cat } var animal: Animal = .dog switch animal { case .dog: print("你好,狗!") case .cat: print("你好,貓!") } 情況可以是一個區間: var age = 20 switch age { case 0..<18: print("你不能開車!") default: print("你可以開車") }

Swift運算子

本教程屬於Swift系列。 我們可以使用一組廣泛的運算子對值進行操作。 運算子可以分為多個類別。首先是目標數量:單目運算子需要1個目標、雙目運算子需要2個目標,而獨有的三目運算子則需要3個目標。 然後,我們可以根據操作的類型將運算子分為以下幾類: 賦值運算子 算術運算子 複合賦值運算子 比較運算子 區間運算子 邏輯運算子 加上一些更高級的運算子,包括空值合併、三元條件、溢位、位元和逐點運算子。 註:Swift允許您創建自己的運算子並定義運算子在您自定義的類型上的行為。 賦值運算子 賦值運算子用於將一個值賦給一個變量: var age = 8 或將一個變量的值賦給另一個變量: var age = 8 var another = age 算術運算子 Swift有一些二元算術運算子:+、-、*、/(除法)、%(求餘): 1 + 1 //2 2 - 1 //1 2 * 2 //4 4 / 2 //2 4 % 3 //1 4 % 2 //0 -也可以作為一元減號運算子: let hotTemperature = 20 let freezingTemperature = -20 +還可以用於連接字符串值: "Roger" + " is a good dog" 複合賦值運算子 複合賦值運算子將賦值運算子與算術運算子結合使用:...

如何在Swift中對數組進行洗牌

本教程屬於Swift系列 假設你有一個Swift數組,像這樣: var items = 1...3 你想要將它洗牌,以便以隨機順序獲取數組中的項目。 在Swift中有2種方法可以實現這一點。 一種方法是對原始數組進行變異操作,使用shuffle()方法將數組中的項目進行洗牌: items.shuffle() 注意我使用了var,因為數組是一個結構體,如果我將它聲明為let,則它是不可變的,你會得到一個錯誤。 另一種方法是不對原始數組進行變異操作,而是返回一個新的數組,使用shuffled()方法: let items = 1...3 let shuffledItems = items.shuffled() 注意在這裡,我可以安全地使用let來聲明我的變量,因為shuffled()不會變異原始數組。

安裝 iOS 和 Mac beta 版本

每年六月,蘋果公司都會舉辦開發者大會 WWDC(Worldwide Developers Conference)。 在這個日期,他們會宣布新的作業系統和程式語言更新。 這意味著新的 iOS、新的 macOS、新的 iPadOS、watchOS、tvOS。還有一個新的 Swift 更新,以及框架更新,甚至可能有新的框架。還有一個新的 Xcode 版本。 首個公開測試版隨後會釋出給開發者,並且整個夏天都會釋出許多不同的測試版,直到它們變得穩定並對公眾可用,通常是在十月/十一月間。 通常建議不要使用測試版軟體,特別是在主要工作設備上。但是當你看到新版本的奇蹟後,你肯定想親自體驗一下。也許你有一個應用點子,可以開始開發。或者你想更新你的應用程式,讓它們準備好穩定版的釋出。 我總是忽略我生產力使用的 Mac/主要的 iPhone/iPad 上的首個測試版,只是為了確保不會發生重大問題,但之後的測試版通常都很實用。 要獲取新版的 iOS 和 iPadOS、watchOS 測試版,你需要前往 Apple Beta 軟體計畫 網站,尤其是 註冊你的設備 頁面。 對於這些測試版,你不需要任何蘋果開發者計畫的會員資格。 但是對於 macOS 和 Xcode,以便你可以使用更新版本的 Swift 編寫應用程式,你需要具有會員資格。 有了會員資格,你可以登入並訪問 測試版軟體下載 頁面,並且你將能夠看到測試版作業系統的下載: 以及測試版應用程式的下載:

為什麼選擇 iOS

為什麼我選擇深入研究 iOS 呢? 難道我放棄了 Web 開發嗎?當然不是。 Swift 為我帶來了一個全新且令人興奮的世界。 我不是一個 Web 開發人員,我是一個開發人員。無論最終形式是什麼,我的目標是幫助人們成為開發人員。 我有很多想要建立的應用程序的點子,我可以創建它們並解釋如何實現。 我認為很多人都想要建立一個 iOS 應用程序,但這並不是一件簡單的事情。 iOS 應用程序在很多方面都與 Web 應用程序非常不同。 首先,是分發方式。在 Web 上,你擁有自己的域名,你的應用程序就在那裡。而且你可以做任何合法的事情。在 iOS 上,只有 Apple App Store,而且 Apple 對其有很大的控制權。他們可以決定拒絕你的應用程序。 然後是技術堆棧。在 Web 上,你有 JavaScript、HTML 和 CSS,除非你使用一些小眾工具。而在 iOS 上,你有 Swift 和 SwiftUI。 再者,Web 是一個開放的平台,而 iOS 則是封閉的,完全受 Apple 控制。 還有一個很大的區別:你可以創造的類型。在 Web 上,你創建 Web 應用程序,它們存在於瀏覽器中。在 iOS 上,你創建的是移動應用程序,這些應用程序可以隨時隨地帶在身上。這些應用程序可以通過傳感器更好地融入你的生活,它們可以存在於你的手錶上(我說 iOS 但我的意思是所有的移動 Apple 平台:iPhone、iPad、手錶,不包括不同的 Mac)。 所以,對我而言,開始創建 iOS 應用程序更像是創建 Web 上無法實現的應用程序的一種方式,也是進入這個有趣的開發領域的途徑。

談論不同主題的寫作

我已經在這個博客上寫了很長一段時間了。在這段時間裡,我涵蓋了許多不同的主題。 回顧往事,我從一些隨機的 Web 開發主題開始,然後專注於 Go、React、Node.js、CSS、HTML、瀏覽器 APIs、Next.js、Vue.js、Svelte、數據庫、Python、Swift,甚至電子學和 C 語言。 有時候,當我有希望寫一些與我通常所寫的主題不同的內容時,我會考慮一下。 這是我的博客,它不是一本名為“Web 開發”或其他類似的出版物。 儘管如此,當你長時間寫關於一個主題時,即使是像我這樣涵蓋了廣泛範圍的主題,你也會開始覺得自己與讀者之間有一個“合約”。 如果我決定寫關於 X 的內容而讀者對此不感興趣,會發生什麼事呢?他們會停止閱讀或關注這個博客嗎?他們會取消訂閱郵件通訊嗎? 除非你完全偏離了主題,否則幾乎從不會有這種情況。 你讀到了上面的主題列表嗎?它們之間幾乎沒有什麼相關性,除了它們都與編程有關。但是一位 React 開發者對於 C 語言或 CSS 沒有興趣。 因此,廣泛的專業領域是編程,在這個領域下我可以寫關於任何事情。 如果我開始寫關於園藝、狗、或者徒步旅行之類的內容,那就不一樣了。 有時候我會談論商業方面的事情,或者內容的製作,但這些都是相關的。 我考慮過在旅行時寫一些類似“旅遊博客”的帖子,只是為了做些不同的事情。也許有一天我會寫,儘管我不想讓讀者困惑。還有 Google 啊哈哈。 對我來說,規則是寫我想寫的內容。每天寫一篇帖子是關鍵。否則我早就停下來了。如果有一天我想寫關於旅行、烹飪或其他任何事情的內容,我就會去寫。 有時候我寫一篇關於如何為數字遊牧在整個歐洲旅行期間設置我的面包車的帖子,說實話,關於這些主題我獲得了更多的回覆。也許只是因為在他們那個時代這有些不尋常。 我將來要做的一件事是開始寫關於 SwiftUI 和 iOS 開發的內容。我已經考慮了好幾個月了。其實,我想已經有幾年了。 但現在我覺得是合適的時候了。 過去,我決定寫一些我不是非常熱衷的主題,比如數據庫。我對數據庫有多少熱情呢?我開始寫了幾天後就停下來了。 但我想,我可以寫一些我對於 iOS 應用的想法,計劃階段,開發過程,上架 App Store,等等的內容,這可能是我的一部分讀者非常感興趣的內容。 也許他們也有一個 iOS 應用的想法,這可能會是他們開始的觸發點。 我是否對 Web 開發厭倦了?絕對不是。而且任何 iOS 應用也需要與 Web 或 API 相應的對應組件,所以這不意味著我會停止寫關於它的內容。 而且我喜歡 JavaScript。 我只是喜歡編程。用代碼創造事物。不管是 Web 應用、iOS 應用還是桌面應用,都無關緊要。 對我來說,改變一下我寫關於什麼的方式只是為了多元化並保持我的能量水平高。 對我來說一直都是這樣。我會工作在一個 Web 應用上,然後轉到 iOS 應用,然後再轉到 macOS 開發,然後再回到 Web 應用。...

逐一迴圈:`for-in`

本教學屬於 Swift 系列 for-in 迴圈可用於指定次數的迭代,使用範圍運算子: for index in 0...3 { // 4 次迭代,`index` 為:0, 1, 2, 3 } 您也可以迭代陣列或集合元素: let list = ["a", "b", "c"] for item in list { // `item` 包含元素值 } 以及迭代字典元素: let list = ["a": 1, "b": 2, "c": 2] for (key, value) in list { // `key` 包含項目鍵 // `value` 包含項目值 }

關於SwiftUI的一些想法

過去幾週,我一直在認真學習SwiftUI。 再次嘗試之前,我曾經嘗試過,但只堅持了幾天。 它和React非常相似,除了語言不同,SwiftUI使用的是Swift而不是JavaScript。 當然,這並不是什麼新鮮事。SwiftUI無疑受React和React Native的啟發。我只是作為一位資深的React開發者對其印象做個表述。 React在Web上引入了一些徹底改變我們構建應用程序方式的事物: 声明式UI、不可變性和基於數據的UI更改。 這些都是具有改變思維方式的概念,也是Apple平台(如iOS、macOS、iPadOS、watchOS)的一個徹底變革。 當Apple在2014年引入Swift時,他們做出了一個明智的選擇,即與我們使用Objective-C的現有框架UIKit和AppKit進行無縫集成。 由於這個原因,Swift在早期階段就獲得了廣泛的應用,因為開發者對這些框架的工作方式已經非常熟悉,只不過語言發生了變化。 5年過去了,Apple的所有開發者都有足夠的時間用Swift來開發新的應用程序,這使得SwiftUI(於2019年推出)成為了一個徹底的變革。 我敢說,它甚至比Swift本身的引入更加徹底。 現在距離SwiftUI首次推出已經過去了2年。 除非你是早期採用者,否則在跳入"新熱門"之前,你應該等待一段時間以改善問題。 一開始,只有錯誤和沒有文檔,第三方庫的支援也很差。 現在SwiftUI已經成熟到足夠的程度,每個Swift教程也可以算是SwiftUI教程,而Apple也正在不斷努力使其更加優越。 我對Playground應用程序特別感興趣,因為它可以直接從iPad上構建SwiftUI應用程序。 我認為這是一種非常好的構建軟件的方式,但目前尚不可用。我們只是在WWDC上得到了一個潛在的預覽。 特別適合簡單的軟件開發,特別是初學者在學習編程時所寫的軟件。