iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0
Mobile Development

自己的 app 自己寫系列 第 2

[Day2] hello world 之後難度怎麼直線爆炸了

  • 分享至 

  • xImage
  •  

鐵人賽進入第二天,今天繼續跟著 SwiftUI 的官方文件 向前。可是明明預估閱讀時間比較短,為什麼我卻花了昨天兩倍的時間呢 (メ ゚皿゚)メ

也許以前的我嘗試了一下就放棄也情有可原(?)

第二篇的內容是在第一篇的基礎上做延伸,從靜態頁面進化到動態頁面。最主要的知識點是頁面之間的跳轉,另外一樣有提到 Xcode 小技巧,就是在單個 view 底下建立多個 #Preview 丟入不同值,然後可以切換 tab 看不同內容在同樣版面下渲染出來的結果,開發網頁時就不太會這樣所以挺有趣的。

然後 Xcode 有時候預覽真的卡好久,自動報錯有時候也會卡住,寫 App 這麼艱辛的嗎QQ

https://ithelp.ithome.com.tw/upload/images/20240916/20169412f6pG1vFStE.jpg
https://ithelp.ithome.com.tw/upload/images/20240916/20169412oLKAhG4S7t.jpg

一樣是相關的小知識點 (based on ChatGPT):

  • 常用的 protocol
    • hashable:可以被 hash,所以可以像是 set/dict 一樣被快速查找。有些類型沒辦法被自動 hashable,就需要自定義 hash function 才能變成 hashable
    • codable (Encodable + Decodable):可以被轉成外部形式(像是 json)
    • identifiable:需要有 unique id,id 可以是任意形式,最常見是 string 或 uuid
    • equatable:比較是否相等,只要裡面的所有元素都可以比較
    • comparable:可以比大小,如果是多屬性的 struct,需要自行實現 < 函式,swift 無法自動推斷比較順位
  • opaque type:會 return 具體的值,但不會暴露具體的類型。例如 View 就是其一,View 裡面的 body 會返回某種 view,這個可以是 text view, image view, HStack view 都可以,也不用把所有可能性都列出來,增加了更多的靈活性
struct LandmarkList: View {
    var body: some View {
        // ...
        }
    }
}

上一篇
[Day1] 寫 app 的第一天應該從問 ChatGPT 還是從看文件開始
下一篇
[Day3] 學會寫 button 是不是離完成夢想前進了一大步
系列文
自己的 app 自己寫13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言