Latest 1.0.1
Homepage https://github.com/vbicer/RealmStore
License MIT
Platforms ios 8.0, requires ARC
Dependencies RealmSwift
Authors

Build Status
Cocoapods Compatible
Carthage compatible
Language
Readme Score

A lightweight framework which provides abstraction for database operations, base on RealmSwift. RealmSwift usage simple. RealStore provides simplest usage.

Usage

Create your own model:

struct Publisher {
    public let name: String
    public let surname: String
}

Create realm object:

class PublisherEntity: Object{
    @objc dynamic var name = ""
    @objc dynamic var surname = ""
}

Implement RealmEntity protocol which does the magic.

extension Publisher: RealmEntity{
    public init(_ entity: PublisherEntity){
        name = entity.name
        surname = entity.surname
    }

    public var entity: PublisherEntity{
        let publisher = PublisherEntity()
        publisher.name = name
        publisher.surname = surname
        return publisher
    }
}

Create your store. Usage is as simple as possible. All realm operations done with your model Publisher.

let publisherStore = RealmStore<Publisher>()
let publisher = Publisher(name:"Volkan", surname: "Bicer")

//inserts publisher
publisherStore.insert(publisher)

//returns [Publisher]
let publisherList = publishStore.getAll()

//removes publishers from database
publisherStore.clean()

Query

To query you must implement RealmQuery protocol. Simple usage shown below.

extension Publisher: RealmQuery{
    enum Query: QueryType{
        case name(String)
        case surname(String)

        var predicate: NSPredicate?{
            switch self {
            case .name(let value):
                return NSPredicate(format: "name == %@", value)
            case .surname(let value):
                return NSPredicate(format: "surname == %@", value)
            }
        }

        var sortDescriptors: [SortDescriptor]{
            return [SortDescriptor(keyPath:"name")]
        }
    }
}

To query objects just use filter function. It returns an array.

let publisherStore = RealmStore<Publisher>()
publisherStore.insert(Publisher(name: "Volkan", surname: "Bicer"))
let filteredPublishers = publisherStore.filter(with: .name("Volkan"))

Installation

RealmStore can be added to your project using CocoaPods by adding the following line to your Podfile:

pod 'RealmStore'

If you’re using Carthage you can add a dependency on RealmStore by adding it to your Cartfile:

github "https://github.com/vbicer/RealmStore"

Latest podspec

{
    "name": "RealmStore",
    "version": "1.0.1",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "summary": "A repository pattern implementation for Realm database",
    "homepage": "https://github.com/vbicer/RealmStore",
    "authors": {
        "Volkan Bicer": "[email protected]"
    },
    "source": {
        "git": "https://github.com/vbicer/RealmStore.git",
        "tag": "1.0.1"
    },
    "platforms": {
        "ios": "8.0"
    },
    "requires_arc": true,
    "source_files": "RealmStore/**/*.swift",
    "dependencies": {
        "RealmSwift": [
            "~> 2.1"
        ]
    },
    "pushed_with_swift_version": "4.0"
}

Pin It on Pinterest

Share This