Skip to content

eugene-software/EZADatabase

Repository files navigation

EZADatabase

Version License Platform

Requirements

  • iOS 13 and above

Usage Example

Import dependenices:

import Combine
import EZADatabase

In AppDelegate run setup method:

func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    EZADatabase
            .openDatabase()
            .sink { completion in
            } receiveValue: { _ in
            }
            .store(in: &cancellables)
    return true
}

Create CoreDataCompatible struct that reflects a CoreData model:

struct User: Codable, Hashable {
    
    var userId: String
    var userName: String
}

extension User: CoreDataCompatible {
    
    typealias ManagedType = CoreDataUser
    
    var primaryKey: Any {
        return userId
    }
    
    var primaryKeyName: String {
        return "userId"
    }
    
    init(managedObject: CoreDataUser) {
        
        userId = managedObject.userId
        userName = managedObject.userName
    }
}

Create NSManagedObject subclass that conforms to CoreDataExportable and reflects a CoreDataCompatible model:

@objc(CoreDataUser)
class CoreDataUser: NSManagedObject {

    @NSManaged var userId: String
    @NSManaged var userName: String
}

extension CoreDataUser : CoreDataExportable {
    
    typealias ExportType = User
    
    func configure(with object: User, in storage: EZADatabase.CoreDataStorageInterface) {
        
        userId = object.userId
        userName = object.userName
    }
    
    func getObject() -> Device {
        User(managedObject: self)
    }
}
  • To store an object:
let user = User(userId: "someId", userName: "John")

EZADatabase.importRemoteList([user])
    .sink { completion in
        
    } receiveValue: { _ in
        
    }
    .store(in: &cancellables)
  • To receive an object:
EZADatabase.exportRemoteList(predicate: NSPredicate(key: "userId", value: "someId"))
    .sink { completion in
        
    } receiveValue: { user in
        print(user)
    }
    .store(in: &cancellables)

Installation

Cocoapods

EZADatabase is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'EZADatabase'

Swift Package Manager

  1. Right click in the Project Navigator
  2. Select "Add Packages..."
  3. Search for https://github.com/eugene-software/EZADatabase.git

Author

Eugene Software

License

EZADatabase is available under the MIT license. See the LICENSE file for more info.

About

Convenient library to work with CoreData with Combine

Topics

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Packages

 
 
 

Contributors