Шаблон iOS

Шаблон бэкенда приложения Todo
iOS — Схема, API и руководство по AI

Готовая к производству iOS Todo схема бэкенда и Стартовый комплект на Back4app: диаграмма ER, словарь данных, JSON-схема, API-площадка, примеры кода и однонажатийный AI Agent для развертывания за считанные минуты.

Ключевые выводы

На этой странице вы получите готовую к производству схему, одноразовый AI-промпт и пошаговый iOS код — так вы сможете запустить приложение Todo без создания бэкенда.

  1. Развертывание за минутывставьте промпт AI-агента и получите работающее приложение с фронтендом, бэкендом и базой данных.
  2. Безопасность по умолчаниюACL на уровне строк гарантируют, что каждый пользователь видит только свои собственные задачи.
  3. iOS-родной SDKтипизированные объекты, async/await, оффлайн-фиксация и Live Queries из коробки.
  4. REST + GraphQLобе API автоматически генерируются; нет необходимости писать пользовательские конечные точки.
  5. Два класса_User (встроенная аутентификация) и Todo (задачи с заголовком, выполнено, дата выполнения, приоритет, владелец).

Что такое шаблон бэкенда приложения Todo iOS?

Back4app — это бэкенд как услуга (BaaS), идеальный для Todo приложений: управляемый бэкенд, аутентификация, реальное время и SDK для более чем 13 технологий. iOS Шаблон бэкенда Todo приложения — это готовая к производству схема бэкенда, размещенная на Back4app. Она предоставляет вам два класса базы данных (_User и Todo), ACL на основе владения, REST и GraphQL API, а также подсказку AI Agent в один клик — так вы сможете подключить фронтенд iOS и запустить работающее Todo приложение за считанные минуты вместо дней.

Лучше всего для:

Разработчиков приложенийБыстрого прототипированияХакатоновИзучения разработки бэкендаЗапуска MVPКоманд, выбирающих BaaS вместо кастомного бэкенда

Обзор

Todo приложение — это одна из самых распространенных отправных точек для изучения разработки бэкенда. Внутри оно требует регистрации пользователей, CRUD задач, контроля доступа на основе владения и, опционально, синхронизации в реальном времени.

Схема ниже определяет два класса — _User (встроенный) и Todo — соединенные указателем. С помощью Back4app iOS SDK вы можете взаимодействовать с этим бэкендом из вашего приложения — запрашивать, создавать, обновлять и удалять объекты — без написания пользовательского API слоя.

Почему стоит создать ваш iOS Todo бэкенд с Back4app?

Back4app предоставляет готовый бэкенд и типизированный SDK, чтобы вы могли создать ваше Todo приложение без написания REST glue или управления аутентификацией самостоятельно.

  • SDK и безопасность типов: SDK обеспечивает безопасность типов для Todo и User и обрабатывает JSON, так что вам нужно писать меньше шаблонного кода.
  • Асинхронный и необязательный оффлайн: Используйте async/await; поддерживаемые SDK предлагают локальную привязку, чтобы ваш список мог работать в оффлайне и синхронизироваться при возвращении в онлайн.
  • Live Queries: Подписывайтесь на изменения Todo, чтобы интерфейс обновлялся в реальном времени через WebSockets.

Одна и та же схема и API для каждого стека — переключайте клиентов позже, не меняя бэкенд.

Основные преимущества

Готовый к производству бэкенд для Todo, чтобы вы могли быстрее запускать и сосредоточиться на своем приложении.

Запускайте быстрее, без кода бэкенда

REST и GraphQL API и готовая к использованию схема — подключите ваше приложение и вперед.

Безопасно по умолчанию

ACL и разрешения на уровне классов, чтобы пользователи имели доступ только к своим данным.

Обновления в реальном времени

Live Queries через WebSockets для мгновенных обновлений интерфейса.

Встроенная аутентификация

Регистрация пользователей, вход в систему и управление сессиями из коробки — без пользовательского слоя аутентификации.

Работает в оффлайне

Локальное кэширование сохраняет данные доступными в оффлайне и синхронизирует их при повторном подключении.

Развертывание за минуты

Используйте AI Agent для создания и развертывания вашего приложения Todo из этого шаблона.

Готовы попробовать?

Позвольте AI Agent от Back4app создать бэкенд вашего приложения Todo, подключить фронтенд iOS и развернуть — все из одной команды.

Бесплатно для начала — 50 запросов AI Agent в месяц, без необходимости в кредитной карте

Технический стек

Все, что поддерживает этот шаблон приложения Todo, одним взглядом.

Фронтенд
iOS
Бэкенд
__БРЕНД0__
База данных
__БРЕНД0__
Аутентификация
Аутентификация и контроль доступа
API
REST и __БРЕНД0__
Развертывание
AI Агент / Панель управления

ER-диаграмма

Диаграмма «Сущность-Связь» для модели данных приложения iOS Todo.

Просмотреть источник диаграммы
Mermaid
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 — вход в систему, затем запрос и создание задач.

Посмотреть источник диаграммы
Mermaid
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

Словарь данных

Полная справка по полям для каждого класса в схеме.

ПолеТипОписаниеОбязательно
objectIdStringAuto-generated unique identifierавто
titleStringShort description of the task
doneBooleanWhether the task is completed
dueDateDateOptional deadline for the task
priorityNumberPriority level (1 = high, 3 = low)
ownerPointer<_User>User who owns this task
createdAtDateAuto-generated creation timestampавто
updatedAtDateAuto-generated last-update timestampавто

8 поля в Todo

Безопасность и разрешения

Как владение, ACL и разрешения на уровне класса защищают данные в этой схеме.

ACL на уровне строк

Каждый Todo получает ACL, связанный с его владельцем. Только создатель может читать, обновлять или удалять свои собственные задачи.

Разрешения на уровне класса

CLP ограничивают, какие роли или пользователи могут создавать, читать, обновлять или удалять объекты на уровне класса — ваша первая линия защиты.

Владение на основе указателей

Указатель владельца связывает каждый Todo с его _User. Триггеры Cloud Code могут автоматически устанавливать владение и применять ACL при сохранении.

Схема (JSON)

Сырая схема JSON — скопируйте и используйте в своем приложении Back4app или импортируйте через API.

JSON
{
  "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

Используйте AI Agent Back4app для создания реального приложения Todo из этого шаблона: он создаст фронтенд, бэкенд (эту схему, аутентификацию и API) и развернет его — без ручной настройки. Подсказка ниже описывает этот стек Todo, чтобы Агент мог сгенерировать готовое к производству приложение за один раз.

AI Agent Back4app
Готовы к созданию
Создайте приложение Todo на Back4app с этой точной схемой и поведением.

Схема:
1. _User (используйте встроенный Back4app): имя пользователя (String, обязательно), электронная почта (String, обязательно), пароль (String, обязательно); objectId, createdAt, updatedAt (системные).
2. Todo: заголовок (String, обязательно), выполнено (Boolean, по умолчанию: false), срок выполнения (Date, необязательно), приоритет (Number, по умолчанию: 3; 1=высокий, 2=средний, 3=низкий), владелец (Указатель на _User; устанавливается на текущего пользователя при создании); objectId, createdAt, updatedAt (системные).

Безопасность:
- Установите ACL для каждого Todo, чтобы только владелец имел доступ на чтение и запись. Без публичного доступа на чтение/запись.
- При создании установите Todo.owner на текущего пользователя (например, через Cloud Code beforeSave или на стороне клиента).
- Используйте разрешения на уровне класса, чтобы только аутентифицированные пользователи могли создавать/читать/обновлять/удалять Todo.

Аутентификация:
- Регистрация (имя пользователя, электронная почта, пароль) и вход; поддержка выхода/сессии.
- После входа приложение должно показывать и разрешать CRUD только для Todo текущего пользователя.

Поведение:
- Полный CRUD для Todo: создать, список (только владельца), получить один, обновить (переключить выполнено, редактировать заголовок, срок выполнения, приоритет), удалить.
- Список Todo с сортировкой (например, по приоритету, затем по сроку выполнения или созданию). Приоритет по умолчанию для новых Todo: 3 (низкий).

Доставка:
- Создайте приложение Back4app с вышеуказанной схемой, ACL и любым необходимым Cloud Code (например, beforeSave на Todo для установки владельца).
- Сгенерируйте фронтенд и подключите его к этому бэкенду; разверните, чтобы приложение работало от начала до конца.

Нажмите кнопку ниже, чтобы открыть Агент с предзаполненной подсказкой этого шаблона.

Развернуть за минуты50 бесплатных запросов / месяцКредитная карта не требуется

API Playground

Попробуйте REST и GraphQL конечные точки для схемы Todo. Ответы из приведенных выше примерных данных — учетная запись Back4app не требуется.

Загрузка песочницы…

Использует ту же схему Todo, что и этот шаблон.

Пошаговая интеграция iOS

Подключитесь к вашему Back4app бэкенду из iOS приложения, используя Back4app iOS SDK.

  1. Шаг 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. Шаг 2: Инициализируйте Back4app в вашем приложении

    Инициализируйте Back4app SDK при запуске приложения с вашим App ID и URL сервера.

    Swift
    Parse.initialize(
        configuration: ParseClientConfiguration {
            $0.applicationId = "YOUR_APP_ID"
            $0.clientKey = "YOUR_CLIENT_KEY"
            $0.server = "https://parseapi.back4app.com/"
        }
    )
  3. Шаг 3: Запросите все задачи

    Используйте SDK для получения всех объектов Todo, отсортированных по приоритету.

    Swift
    func getTodos() async throws -> [PFObject] {
        let query = PFQuery(className: "Todo")
        query.order(byAscending: "priority")
        return try await query.findObjects()
    }
  4. Шаг 4: Создайте задачу

    Создайте новую задачу Todo с заголовком, статусом выполнения и приоритетом, затем сохраните.

    Swift
    func 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. Шаг 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()
    }

Интеграция управления состоянием

Интегрируйте SDK Back4app с уровнем состояния вашего приложения (например, контекстом, хранилищем или сервисами).

Полная модель данных

Скопируйте полную модель Todo для безопасной сериализации типов (например, класс, интерфейс или определение типа).

Swift
// 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 (или весь класс), чтобы сохранить их на устройстве; запрашивайте закрепленные данные в оффлайне. Когда приложение снова будет в сети, синхронизируйтесь с сервером.

Ниже: закрепите результаты после получения и снимите закрепление, когда вам больше не нужны локальные копии.

Swift
// 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.

Что такое Back4app?
Почему использовать Back4app для приложения iOS Todo?
Что такое класс Todo в приложении iOS Todo?
Как работает владение с iOS SDK?
Могу ли я добавить поля в Todo позже в моем приложении iOS?
Как я могу запрашивать задачи по приоритету в Swift?
Поддерживает ли iOS SDK оффлайн списки Todo?
Как я могу добавить категории или теги в iOS?

Доверяют разработчики по всему миру

Присоединяйтесь к сообществу, строящему будущее приложений

G2 Users Love Us Badge

Готовы создать свое приложение Todo?

Начните свой проект iOS за считанные минуты. Кредитная карта не требуется.

Стройте с ИИ-агентом