SwiftCoreData is a library to manage CoreDataStack
- Fetch
- Delete
- Save
- Batch delete / Batch update
- FetchController
![]() |
![]() |
To run the example project, clone the repo, and run pod install from the Example directory first.
SwiftCoreData is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'SwiftCoreData'let coreDataStack = CoreDataStack(modelName: "NameOfModel")
let persons = coreDataStack
.fetchRequest(CDPerson.self)
.fetch(inContext: context)
for person in persons {
//use person
let name = person.name
...
}let coreDataStack = CoreDataStack(modelName: "NameOfModel")
let person: CDPerson? = coreDataStack
.fetchRequest(CDPerson.self)
.predicate(NSPredicate(format: "age == %i", 5)) //optionally
.fetchOne(inContext: context)
let name = person?.namelet coreDataStack = CoreDataStack(modelName: "NameOfModel")
let count: Int = coreDataStack
.fetchRequestCount(CDPerson.self)
.predicate(NSPredicate(format: "age == %i", 5)) //optionally
.fetchCount(inContext: context)
let coreDataStack = CoreDataStack(modelName: "NameOfModel")
let cdPerson = CDPerson(context: context)
cdPerson.name = "User name"
cdPerson.age = 10
coreDataStack.save(inContext: context) { result: SaveResult in
if let error = result.error {
//Handle error
}
}let coreDataStack = CoreDataStack(modelName: "NameOfModel")
coreDataStack.deleteRequest(CDPerson.self)
.predicate(NSPredicate(format: "age == %i", 5)) //optionally
.delete(inContext: context) { error in
//Handle error
}or
let coreDataStack = CoreDataStack(modelName: "NameOfModel")
let person: CDPerson = ... //some CDPerson or any NSManagedObject
context.delete(person)
coreDataStack.save(inContext: context) { result: SaveResult in
if let error = result.error {
//Handle error
}
}or
let coreDataStack = CoreDataStack(modelName: "NameOfModel")
coreDataStack.batchDeleteRequest(CDPerson.self)
.predicate(NSPredicate(format: "age == %i", Int16(0))) //optionally
.merge(into: [viewContext]) //optionally
.delete(inContext: privateContext) { error in
//Handle error
}let coreDataStack = CoreDataStack(modelName: "NameOfModel")
coreDataStack.batchUpdateRequest(CDPerson.self)
.propertiesToUpdate(["name": "new username"])
.predicate(NSPredicate(format: "age == %i", Int16(0))) //optionally
.merge(into: [viewContext]) //optionally
.update(inContext: privateContext) { error in
//Handle error
}let fetchController = FetchController(
CDPerson.self,
context: viewContext,
sortDescriptors: [NSSortDescriptor(keyPath: \CDPerson.age, ascending: true)], //required sortDescriptors
sectionNameKeyPath: nil, //optionally
cacheName: nil //optionally
)
fetchController.performFetch()
tableView.reloadData()Grigory Sapogov, grisha.sapgv@mail.ru
SwiftCoreData is available under the MIT license. See the LICENSE file for more info.

