iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0

原始碼

  • 廢話不多說,先看這個
  • For more details, please refer to the commit
func loadDataFromAmplify() {
    print("LOAD ~ FROM ~ AMPLIFY")
    do {
        Amplify.DataStore.query(FishingSpot.self) { result in
            switch result {
            case .success(let spots):
                for spot in spots {
                    print(spot)
                }
            case .failure(let error):
                print(error)
            }
        }
    }
}

說明

  • 關於這段程式碼,做了以下事情:
    1. Amplify.DataStore.query(FishingSpot.self) 這段,呼叫了 Amplify.DataStore 模組所提供的 query 方法,試圖在 「FishingSpot表格」取回所有的資料列。
    2. 而結果會有兩種 case: 「.success」或「.failure」,所以用 switch case 分別處理兩種情況。
    3. 原本 Amplify 官方給的範例程式碼,貼上去之後不能直接生效,是因為使用了 await 非同步(異步) 的方式,因此 function 要做對應的更動。
    4. 基於先驗證功能有效之後再修改效能的緣故,所以先把 Async/Await 的語法拔除。
    5. 預計在 case 為 .success 時,結果會是一串 [FishingSpot] Array。
    6. 對其先使用 For loop 承接,並依序印出。
    7. 之後再把他從 FishingSpot 這種 Model 轉換成 FishPinAnnotation 這種形式(顯示在手機端程式的圖釘格式)!

後續處理

  • 去年在實作私房釣點功能時,創造出 PinLocationFishPinAnnotation 這兩種 struct,分別是因為
    • 一個要從文字檔案讀進資料
    • 另一個是要在介面上繪製圖釘
  • 如今多建立一個雲端版資料,便會有複雜的設計,不知道誰才是老大,覺得不是很好。
    • 繪製圖釘這個 struct 肯定不能剔除掉
    • 單機文字檔,以後可能不需要了,可以把它去掉

上一篇
【Day 8】 新增資料:使用 Amplify Studio 無痛維護
下一篇
【Day 10】 Combine:The Swift API framework
系列文
依然無法成為釣魚大師也要努力摸魚!!辣個吃魚神器 APP 第二彈33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言