Quickstarters
CRUD Samples
Как создать CRUD-приложение с SwiftUI?
28 мин
обзор в этом руководстве вы узнаете, как разработать полностью функциональное crud (создание, чтение, обновление и удаление) приложение с использованием swiftui swiftui — это фреймворк для создания пользовательских интерфейсов для ios, ipados, watchos, tvos, visionos и macos мы будем использовать back4app в качестве серверной службы для управления нашими данными этот учебник проведет вас через настройку вашего проекта back4app, проектирование схемы базы данных, интеграцию с swiftui с использованием api вызовов и защиту вашего бэкенда что вы узнаете как построить crud приложение, которое обрабатывает операции с данными без проблем техники для проектирования надежного и масштабируемого бэкенда методы подключения интерфейса swiftui к back4app с использованием rest api как безопасно управлять данными с помощью расширенных средств контроля доступа предварительные требования учетная запись back4app убедитесь, что вы зарегистрировались и создали новый проект на back4app смотрите быстрый старт back4app https //www back4app com/docs/get started/new parse app для получения помощи среда swiftui убедитесь, что у вас установлен xcode и создан базовый проект swiftui знания базовые знания swift, swiftui и restful api будут полезны перед началом шаг 1 – создание вашего проекта back4app инициация нового проекта на back4app получите доступ к вашей панели управления back4app войдя в свою учетную запись выберите “новое приложение” чтобы начать новый проект назовите ваш проект например, basic crud app swiftui , и следуйте инструкциям на экране, чтобы завершить настройку создать новый проект после создания вашего проекта он появится на вашей панели управления, готовый к настройке для операций с бэкендом шаг 2 – создание схемы вашей базы данных определение вашей модели данных для этого crud приложения вам нужно определить несколько коллекций (классов) ниже приведены примеры, которые описывают ключевые коллекции вместе с их полями и типами 1\ коллекция элементы эта коллекция хранит детали о каждой записи поле тип цель ид идентификатор объекта автоматически сгенерированный первичный ключ название строка название или заголовок элемента описание строка краткое объяснение о предмете создано в дата метка времени, указывающая на создание обновлено дата время последнего обновления 2\ коллекция пользователи эта коллекция содержит учетные данные пользователей и детали профиля поле тип цель ид идентификатор объекта автоматически сгенерированный уникальный идентификатор имя пользователя строка уникальное имя пользователя для входа электронная почта строка уникальный адрес электронной почты пользователя хэш пароля строка зашифрованный пароль для аутентификации создано в дата время создания аккаунта обновлено дата время последнего изменения учетной записи вы можете настроить эти классы вручную через панель управления back4app, создав новые классы и добавив столбцы для каждого поля создать новый класс используйте инструменты панели управления для определения имени поля, типа, значения по умолчанию и статуса обязательности создать столбец использование ai агента back4app агент ai back4app упрощает процесс генерации схемы он может автоматически создавать вашу схему базы данных на основе текстового запроса как использовать агента ai найдите агента ai войдите в систему и перейдите в раздел агента ai в настройках вашего проекта отправьте описание вашей схемы введите подробный запрос, который описывает желаемые коллекции и поля просмотрите и примените после генерации проверьте схему и примените изменения пример запроса create these collections in my back4app project 1\) collection items \ fields \ id objectid (auto generated) \ title string \ description string \ created at date (auto generated) \ updated at date (auto updated) 2\) collection users \ fields \ id objectid (auto generated) \ username string (unique) \ email string (unique) \ password hash string \ created at date (auto generated) \ updated at date (auto updated) эта функция экономит время и обеспечивает согласованность в настройке вашей базы данных шаг 3 – управление данными с помощью интерфейса администратора обзор интерфейса администратора приложение администратора back4app – это инструмент без кода, который упрощает управление данными его интуитивно понятный интерфейс перетаскивания позволяет вам легко выполнять операции crud активация интерфейса администратора перейдите в меню “еще” в вашей панели управления back4app выберите “admin app” и затем выберите “включить admin app ” настройте учетные данные создайте вашего первоначального администратора, который автоматически настраивает системные роли включить admin app после активации войдите в admin app, чтобы управлять вашими коллекциями панель управления admin app crud операции в интерфейсе администратора создать используйте опцию “добавить запись” в любой коллекции (например, товары), чтобы добавить новые данные читать/обновлять нажмите на запись, чтобы просмотреть детали и изменить поля удалить удаляйте записи с помощью функции удаления, когда они больше не нужны этот интерфейс улучшает удобство использования и упрощает повседневные операции с данными шаг 4 – интеграция swiftui с back4app с вашим бэкендом на месте, пора подключить ваше приложение swiftui к back4app использование rest api вызовов в swiftui вместо того чтобы полагаться на sdk, мы будем использовать rest api вызовы для взаимодействия с back4app из нашего приложения swiftui пример получение элементов создайте новый вид swiftui (например, itemslistview\ swift ) и добавьте следующий код import swiftui import combine struct item identifiable, codable { let id string let title string let description string } class itemsviewmodel observableobject { @published var items \[item] = \[] private var cancellables = set\<anycancellable>() func fetchitems() { guard let url = url(string "https //parseapi back4app com/classes/items") else { return } var request = urlrequest(url url) request addvalue("your application id", forhttpheaderfield "x parse application id") request addvalue("your rest api key", forhttpheaderfield "x parse rest api key") urlsession shared datataskpublisher(for request) map { $0 data } decode(type itemsresponse self, decoder jsondecoder()) receive(on dispatchqueue main) sink(receivecompletion { completion in if case let failure(error) = completion { print("error fetching items \\(error)") } }, receivevalue { response in self items = response results }) store(in \&cancellables) } } struct itemsresponse codable { let results \[item] } struct itemslistview view { @stateobject private var viewmodel = itemsviewmodel() var body some view { navigationview { list(viewmodel items) { item in vstack(alignment leading) { text(item title) font( headline) text(item description) font( subheadline) } } navigationtitle("items") onappear { viewmodel fetchitems() } } } } struct itemslistview previews previewprovider { static var previews some view { itemslistview() } } этот вид получает данные из back4app через rest и отображает их в списке дальнейшие операции с api создание новых элементов используйте urlsession с post запросом для добавления новых записей обновление элементов реализуйте put запросы для изменения существующих данных удаление элементов используйте delete запросы для удаления данных интегрируйте эти сетевые операции в ваши swiftui представления по мере необходимости шаг 5 – обеспечение безопасности вашего бэкенда реализация контроля доступа защитите свои данные, установив списки контроля доступа (acl) для ваших объектов например, чтобы создать защищенную запись элемента func createsecureitem(title string, description string, ownerid string) { guard let url = url(string "https //parseapi back4app com/classes/items") else { return } var request = urlrequest(url url) request httpmethod = "post" request addvalue("your application id", forhttpheaderfield "x parse application id") request addvalue("your rest api key", forhttpheaderfield "x parse rest api key") request addvalue("application/json", forhttpheaderfield "content type") let itemdata \[string any] = \[ "title" title, "description" description, "acl" \[ ownerid \["read" true, "write" true], " " \["read" false, "write" false] ] ] request httpbody = try? jsonserialization data(withjsonobject itemdata) urlsession shared datatask(with request) { data, response, error in if let error = error { print("error creating item \\(error)") } } resume() } настройка разрешений на уровне класса в вашей панели управления back4app настройте разрешения на уровне класса (clp) для каждой коллекции, чтобы установить, кто может по умолчанию читать или записывать данные шаг 6 – реализация аутентификации пользователей создание учетных записей пользователей back4app использует класс пользователя для обработки аутентификации в вашем приложении swiftui управляйте регистрацией и входом через вызовы rest api пример регистрация пользователя func signupuser(username string, password string, email string) { guard let url = url(string "https //parseapi back4app com/users") else { return } var request = urlrequest(url url) request httpmethod = "post" request addvalue("your application id", forhttpheaderfield "x parse application id") request addvalue("your rest api key", forhttpheaderfield "x parse rest api key") request addvalue("application/json", forhttpheaderfield "content type") let userdata \[string any] = \[ "username" username, "password" password, "email" email ] request httpbody = try? jsonserialization data(withjsonobject userdata) urlsession shared datatask(with request) { data, response, error in if let error = error { print("sign up error \\(error)") } else { print("user registered successfully") } } resume() } этот подход можно расширить для входа пользователя и управления сессиями шаг 7 – заключение и будущие улучшения отличная работа! вы успешно создали базовое crud приложение с использованием swiftui и back4app вы создали проект под названием basic crud app swiftui , разработали схему базы данных для элементов и пользователей и подключили свой интерфейс swiftui к бэкенду через rest api вызовы кроме того, вы узнали, как защитить свои данные с помощью acl и реализовать аутентификацию пользователей что дальше? расширьте свой интерфейс улучшите свой интерфейс swiftui с помощью детализированных представлений, анимаций и интерактивных элементов расширенные функции включите дополнительную логику бэкенда, такую как облачные функции или обновления данных в реальном времени изучите больше посетите документацию back4app https //www back4app com/docs для получения дополнительных сведений о том, как оптимизировать ваше приложение и интегрировать более сложные функции следуя этому руководству, вы теперь обладаете основными навыками для создания надежного и масштабируемого crud бэкенда для ваших приложений swiftui с использованием back4app удачи в разработке и инновациях!