protocol CoreDataProvider {
init(type: CoreDataManagerType)
var core: CoreDataCore { get }
- var managedObjectContext: NSManagedObjectContext { get }
- func saveActionCore()
+ var context: NSManagedObjectContext { get }
+ func save()
}
protocol CoreDataManager {
static var `default`: InstanceType { get }
static func oneTimeEditor() -> InstanceType
- func removeDatabaseFile()
+ func removeDataFile()
}
protocol CoreDataAccessor: CoreDataProvider {
["", "-wal", "-shm"]
.map { name + $0 }
.map { ApplicationDirecrories.support.appendingPathComponent($0) }
- .forEach { removeDatabaseFileAtURL(url: $0) }
+ .forEach { removeDataFile(at: $0) }
}
- private class func removeDatabaseFileAtURL(url: URL) {
+ private class func removeDataFile(at url: URL) {
do {
try FileManager.default.removeItem(at: url)
} catch {
if failError?.domain == NSCocoaErrorDomain,
(failError?.code == 134130 || failError?.code == 134110),
info.tryRemake {
- self.removeDatabaseFile(info)
+ self.removeDataFile(info)
do {
try coordinator!.addPersistentStore(ofType: info.type,
configurationName: nil,
moc.undoManager = nil
return moc
}
- private class func removeDatabaseFile(_ info: CoreDataIntormation) {
+ private class func removeDataFile(_ info: CoreDataIntormation) {
CoreDataRemover.remove(name: info.fileName)
}
}
extension CoreDataManager where Self: CoreDataProvider {
- func removeDatabaseFile() {
+ func removeDataFile() {
CoreDataRemover.remove(name: self.core.info.fileName)
}
}
extension CoreDataProvider {
- func saveActionCore() {
- if !managedObjectContext.commitEditing() {
+ func save() {
+ if !context.commitEditing() {
NSLog("\(String(describing: type(of: self))) unable to commit editing before saveing")
return
}
do {
- try managedObjectContext.save()
+ try context.save()
} catch { presentOnMainThread(error) }
- if let p = managedObjectContext.parent {
+ if let p = context.parent {
p.performAndWait {
do {
try p.save()
func insertNewObject<T>(for entity: Entity<T>) -> T? {
return NSEntityDescription
.insertNewObject(forEntityName: entity.name,
- into: managedObjectContext) as? T
+ into: context) as? T
}
func delete(_ object: NSManagedObject) {
- managedObjectContext.delete(object)
+ context.delete(object)
}
func object(with objectId: NSManagedObjectID) -> NSManagedObject {
- return managedObjectContext.object(with: objectId)
+ return context.object(with: objectId)
}
func objects<T>(with entity: Entity<T>,
sortDescriptors: [NSSortDescriptor]? = nil,
let req = NSFetchRequest<T>(entityName: entity.name)
req.sortDescriptors = sortDescriptors
req.predicate = predicate
- return try managedObjectContext.fetch(req)
+ return try context.fetch(req)
}
}