Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import RealmSwift
- internal struct RealmService {
- internal static let shared = RealmService()
- private let realm = try! Realm()
- // MARK: - Setter
- internal func add<T: Object>(object: T) {
- do {
- try realm.write({
- realm.add(object)
- })
- } catch {
- printError()
- }
- }
- internal func add<T: Object>(array: [T]) {
- do {
- try realm.write({
- realm.add(array)
- })
- } catch {
- printError()
- }
- }
- // MARK: - Getter
- internal func get<T: Object>(objectsOfInstanceType instanceType: T.Type) -> Results<T>? {
- let objects = realm.objects(instanceType)
- if !objects.isEmpty {
- return objects
- }
- return nil
- }
- internal func get<T: Object>(objectsOfInstanceType instanceType: T.Type, withPredicate predicate: NSPredicate) -> Results<T>? {
- if let objects = get(objectsOfInstanceType: instanceType) {
- let filteredObjects = objects.filter(predicate)
- if !filteredObjects.isEmpty {
- return filteredObjects
- }
- }
- return nil
- }
- internal func get<T: Object>(arrayOfInstanceType instanceType: T.Type) -> [T]? {
- if let objects = get(objectsOfInstanceType: instanceType) {
- return objects.toArray()
- }
- return nil
- }
- internal func get<T: Object>(arrayOfInstanceType instanceType: T.Type, withPredicate predicate: NSPredicate) -> [T]? {
- if let objects = get(objectsOfInstanceType: instanceType, withPredicate: predicate) {
- return objects.toArray()
- }
- return nil
- }
- // MARK: - Remove
- internal func remove<T: Object>(object: T) {
- realm.beginWrite()
- realm.delete(object)
- do {
- try realm.commitWrite()
- } catch {
- printError()
- }
- }
- internal func remove<T: Object>(objectsOfInstanceType instanceType: T.Type) {
- let objects = realm.objects(instanceType)
- realm.beginWrite()
- realm.delete(objects)
- do {
- try realm.commitWrite()
- } catch {
- printError()
- }
- }
- // MARK: - Helpers
- internal func exists<T: Object>(objectsOfInstanceType instanceType: T.Type, withPredicate predicate: NSPredicate) -> Bool {
- if let _ = get(objectsOfInstanceType: instanceType, withPredicate: predicate) {
- return true
- } else {
- return false
- }
- }
- private func printError() {
- print("Realm Error")
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement