https://github.com/volkanbicer/realmstore
A lightweight framework which provides abstraction for database operations, base on RealmSwift
https://github.com/volkanbicer/realmstore
realm realmswift swift
Last synced: 3 months ago
JSON representation
A lightweight framework which provides abstraction for database operations, base on RealmSwift
- Host: GitHub
- URL: https://github.com/volkanbicer/realmstore
- Owner: volkanbicer
- License: mit
- Created: 2017-09-24T11:50:58.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-09-26T06:39:04.000Z (over 7 years ago)
- Last Synced: 2025-02-28T10:19:33.350Z (3 months ago)
- Topics: realm, realmswift, swift
- Language: Swift
- Homepage: https://github.com/vbicer/RealmStore
- Size: 2.48 MB
- Stars: 7
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# RealmStore
[](https://travis-ci.org/vbicer/RealmStore)
[](https://img.shields.io/cocoapods/v/RealmStore.svg)
[](https://github.com/Carthage/Carthage)

[](http://clayallsopp.github.io/readme-score?url=https://github.com/vbicer/realmstore)A lightweight framework which provides abstraction for database operations, base on [RealmSwift](https://github.com/realm/realm-cocoa). RealmSwift usage simple. RealStore provides simplest usage.
# Usage
Create your own model:```swift
struct Publisher {
public let name: String
public let surname: String
}
```Create realm object:
```swift
class PublisherEntity: Object{
@objc dynamic var name = ""
@objc dynamic var surname = ""
}
```Implement `RealmEntity` protocol which does the magic.
```swift
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`.
```swift
let publisherStore = RealmStore()
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.
```swift
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.
```swift
let publisherStore = RealmStore()
publisherStore.insert(Publisher(name: "Volkan", surname: "Bicer"))
let filteredPublishers = publisherStore.filter(with: .name("Volkan"))
```# Installation
RealmStore can be added to your project using [CocoaPods](https://cocoapods.org/) by adding the following line to your Podfile:
```
pod 'RealmStore'
```If you're using [Carthage](https://github.com/Carthage/Carthage) you can add a dependency on RealmStore by adding it to your Cartfile:
```
github "https://github.com/vbicer/RealmStore"
```