Latest 1.0.0
License MIT
Platforms ios 9.0

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


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



For using with CoreData:

pod 'DAO/CoreData'

Or with Realm:

pod 'DAO/Realm'


// 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 =

// 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 many features of database. Realm Mobile Platform, for instance is not compatible with this implementation.
  • If you have thousands of objects (> 10-20K). Performance can be the issue.


  • XCode 8
  • Swift 3
  • iOS 9


Ivan Vavilov – [email protected]

Latest podspec

    "name": "DAO",
    "version": "1.0.0",
    "summary": "DAO Library",
    "description": "Library provides easy way to cache entities.",
    "homepage": "",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    "authors": {
        "vani2": "[email protected]"
    "source": {
        "git": "",
        "tag": "1.0.0",
        "submodules": true
    "platforms": {
        "ios": "9.0"
    "source_files": "DAO/Classes/Core/**/*",
    "pushed_with_swift_version": "3.0",
    "subspecs": [
            "name": "Realm",
            "source_files": [
            "dependencies": {
                "RealmSwift": []
            "name": "CoreData",
            "source_files": [

Pin It on Pinterest

Share This