Я так понял, что в основном вопрос на тему выбора структуры сущностей. Для этого неплохо было бы увидеть сами запросы. Самое простое - это держать объект Предмет с полями: Название, Преподаватель, Кабинет/Место, Время начала, Продолжительность.
Я бы напрямую биндил в сущности базы(с этой задачей отлично справится MagicalRecord), а далее уже фильтруем.
Касательно фильтрации, как написал
@morozovdenis, используется класс NSPredicate.
Отдельно добавлю, что у любого фреймвока/либы для работы с базами уже наверняка есть встроенные возможности для фильтрации и сортировки, достаточно пробежаться по любому туториалу/докам.