肝了一個月,這個基於 GPT 模型的背單詞 App 終於發布 Beta 版本了。作為一個程序員,每次整出一個產品出來的時候總是異常興奮,就像是孕育了 10 個月的寶寶馬上就要出生了。
限量派送 100 位終身 VIP#
先打個廣告,放個下載鏈接,歡迎嘗鮮提反饋,我後面會為前 100 名參與 Beta 版測試的同學送上終身會員!
https://testflight.apple.com/join/8d8ei614
關於靈瓜#
這個產品的靈感來自於我自己學英語背單詞的需求。我使用了市面上的很多背單詞的 App,包括百詞斬、扇貝、墨墨背單詞,這些用戶量很大的,也包括一些相對小眾或者個人開發者開發的,比如方塊背單詞,List 單詞,詞根詞綴背單詞等等。背完兩本雅思詞書之後發現還是有很多問題:
- 每天乾巴巴的背單詞實在是太枯燥了
- 很多單詞是在 App 背單詞的場景認識,一到實際語境中就覺得很模糊了
- 單純背單詞基本只是能保證遇到單詞能認識,但是自己很難在實際口語或者寫作中去應用
- 背完單詞只能記住一個基礎意思,實際遇到單詞的其他形態就又不認識了
帶著以上的這些問題和困惑,突然有一天,我得到一個靈感,即將背單詞與讀故事進行結合,這樣我們就可以在實際的語境中反復的接觸那些我們需要背的單詞,畢竟看小說比乾巴巴背單詞有意思多了。相比傳統背單詞的方法,我覺得靈瓜背單詞會有以下優點:
- 邊讀故事邊背單詞沒那麼枯燥了,可能不知不覺就看了很久的故事,然後發現居然掌握了很多單詞
- 一個單詞會反復在多個章節出現,無形中強化記憶,而且可能是不同的上下文或不同的形態
- 故事是根據自己的背單詞進度生成的,對每個人來說都是私人定制
於是,一個月後的今天,「靈瓜背單詞」閃亮登場!
關於開發體驗#
作為一名程序員,最近這半年的開發已經對 ChatGPT 以及其他各種 AI 工具產生了嚴重的依賴,特別是最近這一個月。
上面的圖片是這個 App 的 Icon,這是我用 Midjourney 製作的。
另外目前 App 內置的四個故事模版的 Cover 圖片也都是用 Midjourney 生成的。值得一提的是,用 Midjourney 生成文章的頭圖、插圖之類的,基本就是一次成型,成功率接近 100%。
對於 iOS 開發,我就是個接觸才半年的門外漢,只會 SwiftUI。不過對於老油條程序員來說,雖然沒有那麼多時間研究底層的原理,但因為有了 AI 的加持,搗鼓出一些自己想要的東西還是挺容易的。我已經從「面向 StackOverflow 編程」成功跨越到了「面向 ChatGPT 編程」。
對於很多技術問題,ChatGPT 能夠直接給出可以運行的代碼,如果出錯了,直接貼上錯誤日誌,他還能幫你一起分析錯誤原因。
舉個簡單例子,我在最後收尾階段想在「關於」頁面底部顯示 App 的版本號,然後:
我:在 iOS App 中如何獲取並顯示當前 App 的版本以及 Build 資訊?
ChatGPT: 在 iOS 應用開發中,你可以通過訪問應用的 Info.plist 文件來獲取當前應用的版本號和構建號,然後將其顯示在應用界面上。
以下是在 Swift 中獲取並顯示應用版本和構建資訊的示例代碼:
if let infoDict = Bundle.main.infoDictionary { // 獲取應用版本號 if let appVersion = infoDict["CFBundleShortVersionString"] as? String { print("App Version: \(appVersion)") } // 獲取應用構建號 if let buildNumber = infoDict["CFBundleVersion"] as? String { print("Build Number: \(buildNumber)") } }
你可以將上面的代碼添加到應用程序的啟動代碼中,例如在 AppDelegate 的 didFinishLaunchingWithOptions 方法中。> 如果你想在應用界面中顯示版本和構建資訊,可以將這些值分別賦給文本標籤或標籤的文本屬性。
例如,在一個 UIViewController 中,你可以使用以下代碼將版本和構建資訊顯示在兩個標籤中:
if let infoDict = Bundle.main.infoDictionary { // 獲取應用版本號 if let appVersion = infoDict["CFBundleShortVersionString"] as? String { versionLabel.text = "Version: \(appVersion)" } // 獲取應用構建號 if let buildNumber = infoDict["CFBundleVersion"] as? String { buildLabel.text = "Build: \(buildNumber)" } }
請確保將 versionLabel 和 buildLabel 與您應用界面中的標籤控件進行連接。
我: SwiftUI 中呢?
ChatGPT: 在 SwiftUI 中,你可以通過使用 Bundle 和 Text 視圖來獲取並顯示應用程序的版本號和構建號。下面是獲取並顯示應用程序版本號和構建號的 SwiftUI 代碼示例:
import SwiftUI struct ContentView: View { var body: some View { VStack { if let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String { Text("App Version: \(appVersion)") } if let buildNumber = Bundle.main.infoDictionary?["CFBundleVersion"] as? String { Text("Build Number: \(buildNumber)") } } } }
在上述示例中,我們首先檢查 Bundle.main.infoDictionary 是否存在,然後分別從中獲取應用程序的版本號和構建號。如 > 果成功獲取,則使用 Text 視圖將它們顯示在垂直堆疊中。
你可以將上面的代碼複製到你的 SwiftUI 視圖中,以便在你的應用程序中顯示應用程序版本號和構建號。
你看,直接給我最終的代碼,我只需要 Copy/Paste 即可。