Core Data is a framework that you use to manage the model layer
objects in your application. It provides generalized and automated
solutions to common tasks associated with object life cycle and object
graph management, including persistence.

The NSUserDefaults class provides a programmatic interface for
interacting with the defaults system. The defaults system allows an
application to customize its behavior to match a user’s preferences.
For example, you can allow users to determine what units of
measurement your application displays or how often documents are
automatically saved. Applications record such preferences by assigning
values to a set of parameters in a user’s defaults database. The
parameters are referred to as defaults since they’re commonly used to
determine an application’s default state at startup or the way it acts
by default.

SQLite is a relational database management system contained in a C
programming library. In contrast to many other database management
systems, SQLite is not a client–server database engine. Rather, it is
embedded into the end program.

Realm Mobile Database is an alternative to SQLite and Core Data.
Thanks to its zero-copy design, Realm Mobile Database is much faster
than an ORM, and often faster than raw SQLite. Get started in minutes,
not hours.