iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0

前言

“如果說 Live-demo 是跳軌的行為,那麼現學現賣肯定是在臥軌” - 小弱砲

這幾天已經陸續調整了 ViewViewModel,使其可讀性上升了一些,然後我將會在原本的程式碼中,引入下方的片段,藉此同時搞定手機端和資料庫端的設定。

參考的程式碼片段,以 FishingSpot 為例

Create

do {
    let item = FishingSpot(
		spotName: "Lorem ipsum dolor sit amet",
		imageUrl: "Lorem ipsum dolor sit amet",
		recommendationRate: 123.45F,
		difficulty: 123.45F,
		coordinate: "Lorem ipsum dolor sit amet")
    let savedItem = try await Amplify.DataStore.save(item)
    print("Saved item: \(savedItem)")
} catch let error as DataStoreError {
    print("Error creating item: \(error)")
} catch {
    print("Unexpected error: \(error)")
}
  • 重點有幾處:
    1. 第 2 行的 Model Name
    2. 第 3 ~ 7 行的,分別是 Field Name 和 example data
    3. 第 8 行,使用 await 方式呼叫 Amplify.DataStore.save。 關於 Async 與 Await 的做法應是為了避免閉塞,之後可以寫一篇來說明。
    4. 第 10 行針對 DataStoreError 的情況印出錯誤內容。
    5. 第 12 行則是針對其他種錯誤內容進行輸出。

Update

do {
    let updatedItem = try await Amplify.DataStore.save(item)
    print("Updated item: \(updatedItem)")
} catch let error as DataStoreError {
    print("Error updating item: \(error)")
} catch {
    print("Unexpected error: \(error)")
}

Delete

do {
    try await Amplify.DataStore.delete(itemToDelete)
    print("Deleted item: \(itemToDelete.identifier)")
} catch let error as DataStoreError {
    print("Error deleting item: \(error)")
} catch {
    print("Unexpected error: \(error)")
}

Query

do {
    let items = try await Amplify.DataStore.query(FishingSpot.self)
    for item in items {
        print("FishingSpot ID: \(item.id)")
    }
} catch let error as DataStoreError {
    print("Error querying items: \(error)")
} catch {
    print("Unexpected error: \(error)")
}

小結

  • 閱讀文件,用法持續更新在這邊內容

參考資料


上一篇
【Day 3】 AppSync:在 AWS Amplify 建立 API
下一篇
【Day 5】 跟上潮流:蘋果生態系的機器學習方案
系列文
依然無法成為釣魚大師也要努力摸魚!!辣個吃魚神器 APP 第二彈33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言