From cd71ac5d7248644ec20038d497e88ef89b5d79bc Mon Sep 17 00:00:00 2001 From: Luiz Fernando Silva Date: Sun, 4 Jun 2017 15:04:10 -0300 Subject: [PATCH] Adding Count operation to Context and implementing it onto the NSManagedObjectContext extension --- .../CoreData/Extensions/NSManagedObjectContext.swift | 10 ++++++++++ SugarRecord/Source/Foundation/Protocols/Context.swift | 1 + 2 files changed, 11 insertions(+) diff --git a/SugarRecord/Source/CoreData/Extensions/NSManagedObjectContext.swift b/SugarRecord/Source/CoreData/Extensions/NSManagedObjectContext.swift index 88ad93ca..440ab022 100644 --- a/SugarRecord/Source/CoreData/Extensions/NSManagedObjectContext.swift +++ b/SugarRecord/Source/CoreData/Extensions/NSManagedObjectContext.swift @@ -18,6 +18,16 @@ extension NSManagedObjectContext: Context { return typedResults } + public func count(_ request: FetchRequest) throws -> Int { + guard let entity = T.self as? NSManagedObject.Type else { throw StorageError.invalidType } + let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: entity.entityName) + fetchRequest.predicate = request.predicate + fetchRequest.fetchOffset = request.fetchOffset + fetchRequest.fetchLimit = request.fetchLimit + let result = try self.count(for: fetchRequest) + return result + } + public func insert(_ entity: T) throws {} public func new() throws -> T { diff --git a/SugarRecord/Source/Foundation/Protocols/Context.swift b/SugarRecord/Source/Foundation/Protocols/Context.swift index cf9f3ebc..55ed2f17 100644 --- a/SugarRecord/Source/Foundation/Protocols/Context.swift +++ b/SugarRecord/Source/Foundation/Protocols/Context.swift @@ -3,6 +3,7 @@ import Foundation public protocol Context: Requestable { func fetch(_ request: FetchRequest) throws -> [T] + func count(_ request: FetchRequest) throws -> Int func insert(_ entity: T) throws func new() throws -> T func create() throws -> T