Todo 應用程式後端模板
iOS - 模式、API 與 AI 指南
可生產的 iOS Todo 後端模式和 Starter Kit on Back4app:ER 圖、資料辭典、JSON 結構圖、API playground、程式碼範例,以及可在幾分鐘內部署的一鍵式 AI Agent提示。
主要心得
在此頁面中,您將獲得一個生產就緒的模式、一鍵式 AI 提示,以及逐步的 iOS代碼 - 因此,您無需建立後端,就可以發佈 Todo 應用程式。
- 在幾分鐘內部署 — 貼上 AI Agent 提示,並取得包含前端、後端和資料庫的執行應用程式。
- 預設安全 — 行層級 ACL 可確保每個使用者只能看到自己的待辦事項。
- iOS-native SDK — 類型的物件、async/await、離線 pinning 以及 Live Queries 開箱即用。
- rest + __brand0__ — 這兩個 API 都是自動產生的,不需要撰寫自訂端點。
- 兩個班級 — _User (內建認證) 和 Todo (具有標題、已完成、到期日、優先順序、所有者的任務)。
什麼是 iOS Todo App 後端模板?
Back4app 是 Todo 應用程式理想的後端即服務 (BaaS):管理後端、認證、即時和 13 種以上技術的 SDK。iOS Todo 應用程式後端範本是一個預先建置、可立即投入生產的後端模式,託管於 Back4app。它為您提供兩個資料庫類別(_User 和 Todo )、基於所有權的 ACL、REST 和 GraphQL API,以及一鍵式 AI Agent 提示 - 因此您可以連接 iOS 前端,並在幾分鐘而不是幾天內傳送一個可用的 Todo 應用程式。
最適合
概述
Todo 應用程式是學習後端開發最常見的起點之一。它需要使用者註冊、任務 CRUD、基於所有權的存取控制,以及可選擇的即時同步。
下面的模式定義了兩個類別 - _User(內建)和 Todo,它們由一個 Pointer 連接。使用 Back4app iOS SDK,您可以從應用程式與此後端互動 - 查詢、建立、更新及刪除物件 - 而無需撰寫自訂 API 層。
为什么使用 Back4app 构建您的 iOS Todo 后端?
Back4app為您提供了一個就緒的後端和類型化的 SDK,因此您可以建立您的 Todo 應用程式,而無需自行撰寫 REST 程式或管理 auth。
- •SDK 與類型安全: SDK 保持 Todo 和 User 的類型安全,並處理 JSON,因此您可以少寫一些模板。
- •非同步與可選的離線: 使用 async/await;支援的 SDK 提供本機釘選功能,因此您的清單可以離線運作,並在重新連線時進行同步。
- •__品牌0__: 訂閱 Todo 變更,讓使用者介面透過 WebSockets 即時更新。
每個堆疊都有相同的模式和 API - 稍後可切換用戶端,而無需變更後端。
核心優勢
生產就緒的 Todo 後端,讓您可以更快速地出貨並專注於您的應用程式。
出貨速度更快,無需後端程式碼
REST 和 GraphQL API 以及即用型模式 - 連接您的應用程式即可使用。
預設安全
ACL 和類別層級權限,讓使用者只能存取自己的資料。
即時更新
透過 WebSockets Live Queries 即時更新使用者介面。
內建認證
使用者註冊、登入及會話處理功能開箱即用 - 無須自訂 auth 層。
離線工作
本機釘選功能可保持資料離線可用,並在您重新連線時進行同步。
在幾分鐘內部署
使用 AI Agent 從此範本建立並部署您的 Todo 應用程式。
準備好試試了嗎?
讓 Back4app AI Agent 創建您的 Todo 應用程式後端,連接 iOS 前端,並進行部署 - 所有這一切只需單一提示即可完成。
免費開始 - 每月 50 個 AI 代理提示,無需信用卡
技術堆疊
此 Todo 應用程式範本的所有功能一目了然。
ER 圖
iOS Todo 應用程式資料模型的實體關係圖。
_User 類包含 objectId、username、email、password、 createdAt 及 updatedAt。Todo 類包含 objectId、title、done、dueDate、priority,以及指向 _User 的所有者指針,加上 createdAt 和 updatedAt。每個 _User 擁有零個或多個 Todo 項目。
檢視圖表來源
erDiagram
_User {
String objectId PK
String username
String email
String password
Date createdAt
Date updatedAt
}
Todo {
String objectId PK
String title
Boolean done
Date dueDate
Number priority
Pointer owner FK
Date createdAt
Date updatedAt
}
_User ||--o{ Todo : "owns"
整合流程
Auth-to-CRUD 序列:您的 iOS 應用程式如何與 Back4app 對話 - 登入,然後查詢和建立待辦事項。
檢視圖表來源
sequenceDiagram
participant User
participant App as iOS App
participant Back4app as Back4app Cloud
User->>App: Login
App->>Back4app: ParseUser.logIn(username:password:)
Back4app-->>App: Session token
App-->>User: Logged in
User->>App: Load todos
App->>Back4app: ParseQuery.find()
Back4app-->>App: [PFObject]
App-->>User: Show list
User->>App: Create todo
App->>Back4app: todo.save()
Back4app-->>App: Todo (objectId)
App-->>User: Updated list資料詞典
模式中每個類別的完整欄位參考。
| 現場 | 類型 | 說明 | 必須 |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | 自動 |
| title | String | Short description of the task | |
| done | Boolean | Whether the task is completed | — |
| dueDate | Date | Optional deadline for the task | — |
| priority | Number | Priority level (1 = high, 3 = low) | — |
| owner | Pointer<_User> | User who owns this task | — |
| createdAt | Date | Auto-generated creation timestamp | 自動 |
| updatedAt | Date | Auto-generated last-update timestamp | 自動 |
Todo中的8字段
安全性與權限
擁有權、ACL 及類別層級權限如何保護此模式中的資料。
行層級 ACL
每個 Todo 都有一個與擁有者綁定的 ACL。只有建立者可以讀取、更新或刪除自己的任務。
等級權限
CLP 限制哪些角色或使用者可以在類別層級建立、讀取、更新或刪除物件,這是您的第一道防線。
指針型所有權
所有者指標 (owner Pointer) 會將每個 Todo 連結至其 _使用者。雲端程式碼觸發器可自動設定所有權,並強制執行儲存的 ACL。
模式 (JSON)
原始 JSON 方案定義 - 複製並在您的 Back4app 應用程式中使用,或透過 API 匯入。
{
"classes": [
{
"className": "Todo",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"title": {
"type": "String",
"required": true
},
"done": {
"type": "Boolean",
"required": false,
"defaultValue": false
},
"dueDate": {
"type": "Date",
"required": false
},
"priority": {
"type": "Number",
"required": false,
"defaultValue": 3
},
"owner": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "_User",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"username": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": true
},
"password": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
}
]
}使用 AI Agent 建立
使用 Back4app AI Agent 從這個範本建立一個真正的 Todo 應用程式:它會建立前端、後端(此模式、認證和 API),並部署它 - 無須手動設定。下面的提示描述了這個 Todo 堆疊,因此 Agent 可以一次產生一個可供生產的應用程式。
請使用以下確切的架構與行為在 Back4app 上建立 Todo 應用程式。 架構: 1. _User(使用 Back4app 內建):username(字串,必填)、email(字串,必填)、password(字串,必填);objectId、createdAt、updatedAt(系統)。 2. Todo:title(字串,必填)、done(布林,預設:false)、dueDate(日期,選填)、priority(數字,預設:3;1=高,2=中,3=低)、owner(指向 _User 的指標;建立時設為目前使用者);objectId、createdAt、updatedAt(系統)。 安全性: - 為每個 Todo 設定 ACL,僅允許擁有者讀寫。不開放公開讀寫。 - 建立時將 Todo.owner 設為目前使用者(例如透過 Cloud Code beforeSave 或用戶端)。 - 使用類別層級權限,僅允許已驗證使用者建立/讀取/更新/刪除 Todo。 認證: - 註冊(username、email、password)與登入;支援登出/工作階段。 - 登入後,應用程式應僅顯示並允許目前使用者之 todo 的 CRUD。 行為: - Todo 完整 CRUD:建立、列表(僅擁有者)、取得單一、更新(切換 done、編輯標題、dueDate、priority)、刪除。 - 列出 todo 並排序(例如依 priority 再 dueDate 或 createdAt)。新 todo 的預設 priority:3(低)。 交付: - 使用上述架構、ACL 及所需 Cloud Code(例如在 Todo 的 beforeSave 設定 owner)建立 Back4app 應用程式。 - 產生前端並連接到此後端;部署使應用程式可端對端執行。
按下下面的按鈕,即可開啟預先填入此範本提示的 Agent。
API 遊樂場
請嘗試 Todo 方案的 REST 和 GraphQL 端點。來自上述範例資料的回應 - 不需要 Back4app 帳戶。
使用與此模板相同的 Todo 模式。
分步式 iOS 整合
使用 Back4app iOS SDK 從 iOS 應用程式連接至您的 Back4app 後端。
步驟 1: 安裝 Back4app iOS SDK
為您的堆疊加入 Back4app SDK (例如 npm、pubspec 或套件管理員)。
Swift// Package.swift or CocoaPods // SPM: .package(url: "https://github.com/parse-community/Parse-Swift", from: "4.0.0") // Podfile: pod 'Parse'步驟 2:在應用程式中初始化 Back4app
在應用程式啟動時,使用您的應用程式 ID 和伺服器 URL 來初始化 Back4app SDK。
SwiftParse.initialize( configuration: ParseClientConfiguration { $0.applicationId = "YOUR_APP_ID" $0.clientKey = "YOUR_CLIENT_KEY" $0.server = "https://parseapi.back4app.com/" } )步驟 3:查詢所有待辦事項
使用 SDK 取得所有 Todo 物件,並依優先順序排序。
Swiftfunc getTodos() async throws -> [PFObject] { let query = PFQuery(className: "Todo") query.order(byAscending: "priority") return try await query.findObjects() }步驟 4:建立待辦事項
建立有標題、已完成和優先順序的新 Todo,然後儲存。
Swiftfunc createTodo(title: String, priority: Int = 3) async throws { let todo = PFObject(className: "Todo") todo["title"] = title todo["done"] = false todo["priority"] = priority try await todo.save() }步驟 5:更新和刪除待辦事項
更新欄位並儲存,或刪除物件。
Swift// Mark done func markDone(objectId: String) async throws { let query = PFQuery(className: "Todo") let todo = try await query.getObjectWithId(objectId) todo["done"] = true try await todo.save() } // Delete func deleteTodo(objectId: String) async throws { let query = PFQuery(className: "Todo") let todo = try await query.getObjectWithId(objectId) try await todo.delete() }
狀態管理整合
將 Back4app SDK 與您應用程式的狀態層 (例如 context、store 或 services) 整合。
完整資料模型
複製完整的 Todo 模型進行類型安全序列化 (例如類別、介面或類型定義)。
// Todo.swift — matches Back4app schema
struct Todo: Codable {
var objectId: String?
var title: String
var done: Bool
var dueDate: Date?
var priority: Int
var owner: Pointer<_User>?
var createdAt: Date?
var updatedAt: Date?
}
func toTodo(_ obj: PFObject) -> Todo {
Todo(
objectId: obj.objectId,
title: obj["title"] as? String ?? "",
done: obj["done"] as? Bool ?? false,
dueDate: obj["dueDate"] as? Date,
priority: obj["priority"] as? Int ?? 3,
owner: obj["owner"] as? Pointer<_User>,
createdAt: obj.createdAt,
updatedAt: obj.updatedAt
)
}離線優先與本地資料庫
使用 pin() 和 unpin(),讓資料在離線時可用,並在回到線上時同步。
支援的 SDK 包含本機資料庫。將 Todo 物件 (或整個類別) 釘選以保留在裝置上;離線時可查詢釘選的資料。當應用程式重新上線時,與伺服器同步。
如下所示:取得結果後,將其釘選;不再需要本機副本時,則取消釘選。
// After fetch, pin for offline
try? await PFObject.pinAll(todos)
// Query from local datastore
let query = PFQuery(className: "Todo").fromLocalDatastore()
query.order(byAscending: "priority")
let localTodos = try? await query.findObjects()
// Unpin
try? await PFObject.unpinAllObjects(inBackground: "Todo")常見問題
有關 Todo 應用程式後端模板的常見問題。