Passing Clase genérica como argumento para funcionar en swift

Abajo es mi método en el que hay una búsqueda que hago en una Cita de clase de objeto administrado. Necesito usar la misma función para otras clases de objetos gestionados similares. ¿Cómo paso diferentes "Clase" como parámetro cada vez que lo necesito? Y también lo uso para ir a buscar ya que actualmente tengo la clase "Cita". Puede que necesite usar Generics puede ser. Sin embargo, no sé cómo.

func getAppointmentArray(aPredicate : String , aModel : Any) -> [Any]
{
    var apptArr = [Any]()
    let fetchRequest = NSFetchRequest<Appointment>(entityName: "Appointment")
    fetchRequest.returnsObjectsAsFaults = false
    fetchRequest.predicate = NSPredicate(format: aPredicate)
    do{
        let records = try managedObjectContext.fetch(fetchRequest)

        if let records = records as? [NSManagedObject]{
            if !records.isEmpty{

                print("coreData apptmnt result : \(records)")
                var appointment : Appointment?

                for obj in records
                {

                }
            }else{
                print("No records found")
                apptArr = []
            }
        }
    }catch{
        print("Error")
         apptArr = []
    }
   return apptArr
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta