All Projects → RedMadRobot → Dao

RedMadRobot / Dao

Licence: mit

Programming Languages

swift
15916 projects

Issues count Cocoapod Swift License

DAO

An implementation of DAO pattern for CoreData and Realm. Helps you think less about database in your application.

Features

  • Use your persistence layer synchronously for CRUD operations.
  • Abstraction of database objects (entries) from application objects (entities).
  • Abstraction from concurrency.

Install

Cocoapods

For using with CoreData:

pod 'DAO/CoreData'

Or with Realm:

pod 'DAO/Realm'

Carthage

Make the following entry in your Cartfile:

github "RedMadRobot/DAO"

Then run carthage update.

At last, you need to set up your Xcode project manually to add the framework:

  1. On “General” settings tab of your target, in the “Linked Frameworks and Libraries” section add each framework you want to use from Carthage/Build folder.

  2. On “Build Phases” settings tab of your target, click the “+” icon and choose “New Run Script Phase”. Create a Run Script with the following content:

/usr/local/bin/carthage copy-frameworks
  1. Add the paths to the frameworks you want to use under “Input Files”:

3.1. For using with CoreData:

$(SRCROOT)/Carthage/Build/iOS/CoreDataDAO.framework

3.2. Or with Realm:

$(SRCROOT)/Carthage/Build/iOS/RealmDAO.framework
  1. Add the paths to the copied frameworks to the “Output Files”:

4.1. For using with CoreData:

$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/CoreDataDAO.framework

4.2. Or with Realm

$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/RealmDAO.framework

Usage

// Create DAO instance
let dao = RealmDAO(RLMMessageTranslator())

//...

// Create message entity
let message = Message(entityId: "abc", text: "text")

// Save message to database
try? dao.persist(message)

// Read saved message from database
let savedMessage = dao.read(message.entityId)

// Delete message from database
try? dao.erase(message.entityId)

Please look at the example project for more information.

When not recommended to use

  • If you have big and complex database schema. Many entities, many relationships.
  • If you want to use specific features of database. Realm Mobile Platform, for instance is not compatible with DAO implementation.
  • If you have thousands of objects (> 10-20K). Performance can be the issue.

Requirements

  • Xcode 11
  • Swift 5
  • iOS 9

Authors

Ivan Vavilov - [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].