Не могу понять почему не приходят данные с реалма, когда вызываю данную функцию в Today Extenison. Прошу помощи, перерыл все, что можно
func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) {
// TODO: - Передавать groupID
getData(dayWeek: whatDayNow(), weekType: whatWeekNow(), groupId: Settings.getGroupId())
completionHandler(NCUpdateResult.newData)
}
Сама функция
fileprivate func getData(dayWeek: Int, weekType: WeekType, groupId: Int) {
ApiManager().getSchedule(dayWeek: dayWeek, weekType: weekType, groupId: groupId) { (data) in
guard let data = data else { return }
self.lessonsData = data
}
}
fileprivate func getData(dayWeek: Int, weekType: WeekType, groupId: Int) -> Results<LessonData> {
let lessonsData = LessonData.getAll().filter("dayWeek = \(dayWeek) AND (weekTypeRM = \"full\" OR weekTypeRM = \"\(weekType.rawValue)\")").sorted(byKeyPath: "startTime")
return lessonsData
}
func getSchedule(dayWeek: Int, weekType: WeekType, groupId: Int, _ completionHandler: @escaping (_ lessons: Results<LessonData>?) -> ()) {
let api = host + "schedule/group/\(groupId)"
DispatchQueue.main.async {
completionHandler(self.getData(dayWeek: dayWeek, weekType: weekType, groupId: groupId))
}
guard let url = URL(string: api) else {
completionHandler(nil)
return
}
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
if error != nil {
print(error?.localizedDescription)
completionHandler(nil)
return
}
guard let data = data else {
completionHandler(nil)
return
}
do {
let schedule = try JSONDecoder().decode(ScheduleData.self, from: data)
let lessonData = schedule.getLessons()
LessonData.save(lessonData)
DispatchQueue.main.async {
completionHandler(self.getData(dayWeek: dayWeek, weekType: weekType, groupId: groupId))
}
} catch {
print(error.localizedDescription)
completionHandler(nil)
return
}
}
task.resume()
}