Most of the iOS applications are often a thin client that provides end-user frontend of your business logic implemented on a centralized, remote server. Thus, prior to implementing core features of your iOS app, iOS developer have to (1) setup communication with a backend server (often as REST requests), and (2) implement persistent storage to keep received data locally.
In this article, we will demonstrate a solution to store our model objects in a storage with a clear separation of concerns using protocol-oriented programming (POP). We will show how to create generic and loosely coupled storage module that provides seamless migration to the alternative framework implementation in the future.