In a design such as this, there is a need to have good error checking, which will let external code know when something bad happens; therefore, we will start the data helper layer by defining the errors that can be thrown. Swift's error-handling framework will be used; therefore, the errors are defined in an enumeration, as follows:
enum DataAccessError: Error { case datastoreConnectionError case insertError case deleteError case searchError case nilInData }
We will see how these errors are thrown as we go through the code. Depending on the type of persistence that is used, the error types may change to give more details about the actual errors that occurred.
The data helper layer will be used to persist the data. This ...