2026年10月3日
iThome 鐵人賽 Day 19:用 Security Rules 限制陣列只能追加,留言不能被改寫,以及空陣列第一次追加被誤擋
iThome 鐵人賽Vibe Coding
+4
不寄垃圾信,隨時可以取消訂閱
App 從 Firebase Emulator 換到正式專案:地區不能改、專案 ID 用過就回不來,管理者帳號查資料不受 Security Rules 檢查。
一天多累積 51 個 commit:規則寫成 AGENTS.md,verify.sh 通過才算完成,兩個 AI 互相審查程式碼。
投票滿一週,15 人投了 43 票,第一版重做:每件事追蹤對方知道了沒有,同步從 D1 換成 Firebase。
Share Extension 接進主 App,兩個程序用 App Group 共用收件匣;第一版也從記孩子近況改成記兩個人還沒有結論的事。
第一個功能完成:一句話存成一筆紀錄,三條規則解析第一次測試就判錯;整理 SwiftData migration 什麼時候不用寫、什麼時候要寫。
寫程式前先做架構文件:免費 Apple ID 沒有 CloudKit 和推播,同步要自己做,離線改到同一筆資料的衝突也要先想好。
定第一版範圍的一天:把系列第一天那句「你怎麼沒跟我說」拆成四個原因,決定用一句話記錄、首頁看孩子近況,需要時再整理成一張交接卡;為什麼不做計分,以及從 Milo 收掉學到的兩件事。
寫 Swift 的第一天:建立 SwiftUI + SwiftData 專案,用官方 MCP 讓 Claude Code 接上 Xcode,跑出第一個畫面。
沒寫過 Swift 要在 30 天做出 iOS App:不從語言學起,而是先列出自己不知道什麼,再訂開發流程、規範和驗收標準。