Работа с типом Date из Realm

Недавно начал изучать Swift. Дошел до работы с Realm. Пишу первое простое приложение типа "учета финансов". В БД у меня есть 3 значения: Категория, Стоимость и Дата. Подскажите, пожалуйста, как реализовать учет финансов за месяц. То есть мне нужно извлечь массив с датами, осуществить проверку по месяцу и сложить полученные значения? Вопрос скорее в том, как работать с датами из realm?


Ответы (2 шт):

Автор решения: schmidt9

Предположим у вас есть объект Realm

class MyEntry : Object {

    @objc dynamic var date: Date?

}

Тогда фильтрацию по датам можно сделать так

guard let realm = try? Realm() else {
     return
}

// заранее сохраненные в базу объекты    
let objects = realm.objects(MyEntry.self)

// первая дата - как пример через 2 дня после первой даты в базе
guard let startDate = objects.first?.date?.addingTimeInterval(2 * 24 * 60 * 60) else {
    return
}

// через сутки относительно startDate
let endDate = startDate.addingTimeInterval(1 * 24 * 60 * 60)

let filtered = objects.filter("self.date >= %@ && self.date <= %@", startDate, endDate)

Справка по NSPredicate

→ Ссылка
Автор решения: Сергей Горбачёв

Сделал выборку следующим образом. Уверен можно как-то проще...

 let calendar = Calendar.current
    var test1 = DateComponents()
    test1.year = 2020
    test1.month = 2
    test1.day = 1
    test1.hour = 00
    let startDate = calendar.date(from: test1) as Any

    var test2 = DateComponents()
    test2.year = 2020
    test2.month = 2
    test2.day = 17
    test2.hour = 24
    let endDate = calendar.date(from: test2) as Any

    let filtered: Int = realm.objects(Spending.self).filter("self.date >= %@ && self.date <= %@", startDate, endDate).sum(ofProperty: "cost")
→ Ссылка