iOS
...
Parse Swift SDK
Data Objects

Basic Operations

17min

CRUD Parse objects in iOS

Introduction

Storing data on Parse is built around the Parse.Object class. Each Parse.Object contains key-value pairs of JSON-compatible data. This data is schemaless, which means that you don’t need to specify ahead of time what keys exist on each Parse.Object. You can simply set whatever key-value pairs you want, and our backend will store it.

You can also specify the datatypes according to your application needs and persist types such as number, boolean,string, DateTime, list, GeoPointers, and Object, encoding them to JSON before saving. Parse also supports store and query relational data by using the types Pointers and Relations.

In this guide, you will learn how to perform basic data operations through a CRUD example app (ToDo list App), which will show you how to create, read, update and delete data from your Parse server database using the ParseSwift SDK.

This tutorial uses a basic app created in Xcode 12 and iOS 14.

At any time, you can access the complete Project via our GitHub repositories.

Goal

To learn how to perform basic database operations on back4app using a ToDo list app as an example

Prerequisites

To complete this quickstart, you need:

Understanding our To-do List App

To better understand the ParseSwift SDK you will perform CRUD operations on a To-do List App. The application database will have a simple task class with a title and a description (both strings). You can update each task’s title and/or description.

Quick reference of commands we are going to use

Once an object conforms the ParseSwift protocol, it automatically implements a set of methods that will allow you to manage the object and update any changes on your Back4App Database. Given the object ToDoListItem

Swift


these methods are listed below.

Create
Read
Update
Delete


1 - Create To-do List App Template

Document image


At any time, you can access the complete Project via our GitHub repositories.

Go to Xcode, and find the SceneDelegate.swift file. In order to add a navigation bar on top of the app, we setup a UINavigationController as the root view controller in the following way

Swift


The root view controller class (ToDoListController) for the navigation controller is a subclass of UITableViewController, this makes easy to layout a list of items.

2 - Setup the CRUD object

Objects you want to save on your Back4App Database have to conform the ParseObject protocol. On our To-do Liat app this object is ToDoListItem. Therefore, you first need to create this object:

Swift


This object defines a class in your Back4App Database. Any new instance of this object is then stored in your database under the ToDoListItem class.

3 - Setup ToDoListController

In ToDoListController we should implement all the necessary configuration for the navigationBar, and tableView properties

Swift


To conclude this step, we implement the custom table view cell ToDoListItemCell

Swift


4 - CRUD flow

We implement all CRUD logic in the ToDoListController class. Go to ToDoListController.swift and add the following methods to the ToDoListController class

Swift


- Create Object

Now we start implementing the createObject(title:description:) method. Create an instance of ToDoListItem using the init(title:description:) initializer. In order to save this new item on your Back4App Database, the ParseSwift protocol provides a save() method. This method can be called synchronously or asynchronously, choose one of them according to your use case. An asynchrononous implementation should look like this

Swift


Now we can complete the action for the add button located at the right side of the navigation bar. Go toToDoListController and add the following

Swift


- Read Object

We move to the readObjects() method. Retreiveing ToDoListItem items from your Back4App Database is performed via a Query<ToDoListItem> object. This query is instanciated in the following way

Swift


In this tutorial we use a query which will retreive all the items of type ToDoListItem from your Back4App Database. In case you want to retreive a set of specific items, you can provide QueryConstraint elements to ToDoListItem.query(QueryConstraint...). For instance, to fetch all items where title == "Some title", the query takes the form

Swift


Once you have the query ready, we proceed to retreive the items by callingquery.find(). Again, this can be done synchronously or asynchronously. In our To-do List app we implement it asynchronously

Swift


With readObjects() completed, we can now fetch all the tasks stored in your Back4App Database and show them right after the app enters to foreground. Go back to ToDoListController and override the viewDidAppear() method

Swift


- Update object

Given the objectId of a ToDoListItem object, it is straightforward to perform an update. We simply instanciate a ToDoListItem object using the init(objectId:) initializer. Next, we update the properties we need and call the save() method (of ToDoListItem) to save changes

Swift


- Delete object

Deleting objects on your Back4App Database is very similar to creating objects. We begin by creating an instance of ToDoListItem with the objectId of the item we want to delete. Next, we simply call (synchronously or ascynchronously) the delete() method of the object. If the deletion was successfull we update the UI, otherwise we report the error

Swift


With deleteObject(item:) and updateObject(objectId:newTitle:newDescription) completed, we proceed to add the corresponding actions to call these operations. Go back to ToDoListController and add

Swift


As we pointed out earlier, the accessory button in each ToDoListItemCell triggers an edit sheet via the tableView(_:accessoryButtonTappedForRowWith:) delegate method.

It’s done!

At this point, you have learned how to do the basic CRUD operations with Parse on iOS.

Updated 28 Mar 2024
Did this page help you?