Go to file
Nikita Semenov bb049169f3
Merge pull request #1 from TouchInstinct/fix/cascade_delet
fix: type casting in cascade deletion
2022-09-14 15:55:24 +03:00
DAO fix: type casting in cascade deletion 2022-09-14 15:37:03 +03:00
DAO.xcodeproj update Realm to 10.1.4; remove Carthage 2020-11-26 09:58:15 +03:00
DAO.xcworkspace update Realm to 10.1.4; remove Carthage 2020-11-26 09:58:15 +03:00
Example fix tests 2020-11-26 17:35:04 +03:00
.gitignore Initial commit 2017-06-13 14:06:20 +03:00
Cartfile revert carthage, update realm-cocoa version 2020-11-27 11:45:21 +03:00
Cartfile.resolved revert carthage, update realm-cocoa version 2020-11-27 11:45:21 +03:00
DAO.podspec update podspec 2021-04-23 18:00:06 +03:00
LICENSE Initial commit 2017-06-13 14:06:20 +03:00
Podfile update Realm to 10.1.4; remove Carthage 2020-11-26 09:58:15 +03:00
Podfile.lock update Realm to 10.1.4; remove Carthage 2020-11-26 09:58:15 +03:00
README.md Update README.md 2020-11-27 12:40:25 +03:00

README.md

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.

  • 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 - iv@redmadrobot.com