iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0

前言

  • 作為一個有相簿功能的 App,背後的圖床,是要謹慎製作。
  • 我認為將圖片,大喇喇地扔進資料庫裡,是不好的做法,其原因有幾個:
    • 使用資料庫來擺圖片的成本,遠高於使用檔案的方式來管理圖片。舉凡要修改圖檔,都要透過資料庫的增刪修查。
    • 在備份的議題,複雜度等價於單純備份檔案備份資料庫系統的差異
    • 備份檔案幾乎不存在停機時間復原時間;備份資料庫需要在系統維護的期間進行

簡單地說,資料庫不適合拿來塞圖片。
在 AWS 解決方案中,經常會使用 S3 作為圖床。

作法概述

  1. 在先前專案內用來管理套件的 Podfile 中,加入
    pod 'AmplifyPlugins/AWSS3StoragePlugin'
    
  2. 透過 pod 指令更新相依套件
    pod install --repo-update
    
  3. 在 App 中,加入一些程式碼片段,觸發這些相依模組的初始化
import AWSS3StoragePlugin

...

func configureAmplify() {
    do {
        try Amplify.add(plugin: AWSCognitoAuthPlugin())
        let models = AmplifyModels()
        try Amplify.add(plugin: AWSAPIPlugin(modelRegistration: models))
        try Amplify.add(plugin: AWSDataStorePlugin(modelRegistration: models))
        try Amplify.add(plugin: AWSS3StoragePlugin())
        try Amplify.configure()
        print("The Amplify configured with Auth and Storage plugins!")
    } catch {
        print(error)
    }
}
  1. 在拍照存檔的畫面中,實作同步函式
    坑坑坑 ... 待補充

本日開發心得

  • 對於 AWS Amplify 的官方文件,寫得真得少之又少,如果您閱讀得非常痛苦,我深感抱歉,因為我也好痛苦呀 QQ
  • 我會盡量把坑填滿,為了不造成篇幅都卡在除錯和閱讀枯燥無味的內容,我今天繼續把開挖的洞繼續挖一挖。
  • 完美主義發作,沒有把這些洞填滿我就不會出書。

上一篇
【Day 10】 Combine:The Swift API framework
下一篇
【Day 12】 Async 和 Await: 當一個時間管理大師
系列文
依然無法成為釣魚大師也要努力摸魚!!辣個吃魚神器 APP 第二彈33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言