用Swift開發macOS程序, 一、先說幾句
我打算花較長的時間來開發一個叫iWriter的軟體,是用寫小說的。有興趣,一起吧。
前段時間我用Electron+Node.js做了個半成品,不知咋的我又決定重新來過。計劃先用Swift開發個macOS版本,然後反饋好的話,繼續用C#開發個Windows版本。你要問「Why?「 我能怎麼辦,都說了不知咋的,大概或許可能是我有更大的想法吧。我打算在不久的將來能開發一個稍大點的程序,到那時Electron可能不夠用。寫程序嘛大家都知道,但是,為什麼我要浪費這春花秋月夏風冬雪去做這麼無聊的事呢。嗯,有點不好意思,所以聲音小一點,「因為我窮,還發抖。」 當我看到唐家三少他們富也發抖時,我就決定從他那扣點什麼。想了三天三夜,決定開發一個寫小說的程序「iWriter」,記得別用我取的名字喲。他們那麼有錢,我的程序那麼好,所以百吧幾十塊錢的,他們肯定捨得施捨。哈哈哈,想到這,心情好多了,看來我也能趕上黨的號召,走向小康生活。你說:「道理我都懂,但為什麼你要開發的是MacOS版本呢?」 這樣問下來,有點尷尬。這不,我現在是遊盪進行時,手頭只有MacBook Pro。如果是在家裡,我肯定是用C#+Windows,因為這個我熟。
你又說:「道理我都懂,但為什麼你要選擇用Swift來開發呢?「 就你話多,又有點尷尬。我知道Objective-C我熟,畢竟用它開發過幾個小程序。但為什麼還是選擇Swift呢,因為不知咋的,知乎前幾天給我推了個SwiftUI的文章,我覺得有前途。只是這個項目用不上,但還是就這樣定了。
我們要一起學什麼呢?
你可要看得清清楚楚,我可沒騙你。
- 我也不會,所以要一起學,但是我是用業餘時間做這個,進程有點慢,你要當心。
- 是學習Swift語言。不是Objective-C,Objective-C我會,Swift我不會的。
- 是開發macOS軟體,蘋果電腦上用的那個。不是iOS,手機用的那個,別看錯了。
我們應該怎麼學呢?
因為是我在寫,所以只能用我的方法了,當然歡迎你用你的方法來寫。
從很久很久以前開始,我學編程、學設計都是從自己的項目開始。就好比現在,有了項目以後,你還要弄清楚這三個問題:首先,要明白自己在做什麼?其次,會涉及到哪些軟體?最後,有哪些技術點?那好,我來說說這一次我們所要學的東西和我們所要做的事情:
首先,要明白自己在做什麼?iWriter,一個用來寫小說的軟體,它有以下主要功能:
- 目錄編輯:導圖式目錄編輯、目錄樹編輯、正文使用#*&@等符號實現標題、段落、備註、插入角色等編輯。
- 角色編輯:姓名生成器、屬性設置,按角色查看時間線
- 場所編輯:場所名稱生成器、屬性設置,按場所查看時間線
- 正文編輯:查找替換、備註、字典、語法檢查、角色全文替換、場所全文替換、角色名稱全文更新,場所名稱全文更新、統計工具、計時工具。
- 軟體風格:界面顏色、文字顏色、字體大小、界面調整與保存
- 文件功能:導入、導出、上傳到小說平台、分享到社交平台。
其次,會涉及到哪些軟體?桌面macOS、編輯器Xcode、開發語言Swift、支持語言SQL等:
- 需要了解macOS系統。這個我會,跟Windows差不多,所以這個不講。
- 需要了解Xcode。這個我也會,有點小得意,哈哈,只是簡單介紹一下。
- 需要了解Swift。這個我不會,聽說是一個不錯的語言,學到應該是掙到。這個教材多,官網上的非常好:https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html。我也會出一份簡明教材。一起學吧。
- 需要了解Sqlite。我是會SQL,Sqlite比SQL學起來應該簡單多了,在這裡是用來保存漢字的字典數據,所用到的語句類型不多。也可能會用Realm,到時候再看。
- 需要了解Photoshop,Illustrator。這個我會,用來做ICON或軟體的開啟圖片,我出圖就可以了,不教。也許會用SVG的圖,嗯,這個也不教了。
- 需要了解Mac下的原型工具。這個我會好幾個,歷害吧?用來做iWriter的原形圖,我出圖就可以了,所以還是不教。
- 需要了解Go或Python。這個我又會,用來爬網上的字典,已經爬好,不教了。只想說一句:用Go做爬蟲,使用多線程超級爽。
最後,有哪些技術點?下面是根據我以前開發iOS的經驗想到的,其實我開發iOS時是根據我開發站點的經驗去想的, 那次結果是對的。哈哈,這次就不知道了:
- 文件保存格式的設計:可以參考電子書EPUB的格式:https://zh.wikipedia.org/wiki/EPUB,或PDF格式:https://zh.wikipedia.org/wiki/%E5%8F%AF%E7%A7%BB%E6%A4%8D%E6%96%87%E6%A1%A3%E6%A0%BC%E5%BC%8F。我打算使用的是:多個關聯文件通過tar打包,並改後綴為.im的格式。後面再講。
- Swift基本了解後,著重熟悉的有:閉包、泛型、包的管理、類的繼承拓展、委託、字元串處理、數組處理、字典處理、文件讀取等。庫的話:2D圖庫用得上。
- macOS組件,組件布局、動畫、事件、數據綁定、數據共享與同步、布局跳轉。這些問題可查Xcode幫助,一般來說都可以解決。
- 文字處理:選擇、替換、樣式。以我JS處理段落文字的經驗,這裡應該比較複雜,複雜處在跨段落、跨章節處理嵌套樣式。
- 配置文件、界面、中英文處理等。中英文處理系統應該是支持的,就算不支持自己處理起來也不算複雜。
- 最後是打包、發布、註冊。
我的筆記類文章是什麼樣的格式呢?
在我寫學習筆記類文章時,特意以一種固定的格式去寫,這格式我稱之為「三段式」。像似每一本書的摘要一樣的,我把文章的重點放在前面。目的是讓看文章的人決定是否需要了解更多的內容,如果不,這樣就為他節約了 80%以上的時間。特別是自己復看時,基本上都不用全部看完。
- 標題。看了標題,有需要,繼續看。
- 提要。看了提要,有需要,繼續看。
- 重點。看了重點,了解,過;不明白,繼續看。(或許不存)
- 細節。看了具體內容,了解,過;不明白,回信:你丫寫的是什麼東東呀。
下一篇,Swift 的基礎。
讓我們在這裡,遇見明天的自己!姜友華
推薦閱讀: