- iOS 13 and above
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)
EZADatabase is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'EZADatabase'
- Right click in the Project Navigator
- Select "Add Packages..."
- Search for
https://github.com/eugene-software/EZADatabase.git
Eugene Software
EZADatabase is available under the MIT license. See the LICENSE file for more info.