class PersistenceManager { static var shared: PersistenceManager = PersistenceManager() .. func fetch<T: NSManagedObject>(request: NSFetchRequest<T>) -> [T] { do { let fetchResult = try self.context.fetch(request) return fetchResult } catch { print(error.localizedDescription) return [] } } } let request: NSFetchRequest<Contact> = Contact.fetchRequest() let fetchResult = PersistenceManager.shared.fetch(request: request) // [Contact]