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]