Swift 4 Запрос нескольких объектов базовых данных с одним и тем же атрибутом - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть приложение, которое имеет несколько сущностей базовых данных, таких как «Run, Walk, Cycle, Elliptical», у каждого из которых есть непротиворечивый атрибут, называемый «duration».

Я в порядке с получением результатов от каждой из этих сущностей в пределах диапазона дат и т. Д., Но я пытаюсь сделать один запрос, который проверяет все эти сущности одновременно и производит массив всех длительностей с сегодняшнего дня. .

Я понимаю, что могу сделать это с помощью отдельных запросов для каждой сущности, но я уверен, что должен быть способ сделать это за один вызов? Этот способ кажется действительно трудоемким и, вероятно, требует много памяти?

Я попробовал довольно много предложений и не добиваюсь результата, которого я добиваюсь!

По сути, мне нужно что-то вроде:

    let calendar = NSCalendar.current
    let dateFrom = NSDate()
    let dateTo = calendar.date(byAdding: .day, value: -1, to: dateFrom as Date)

    let appDelegate = UIApplication.shared.delegate as! AppDelegate

    let context = appDelegate.persistentContainer.viewContext

    let request = NSFetchRequest<Run,Cycle,Walk,Elliptical>(entityName: "Run,Cycle,Walk,Elliptical")

    request.predicate = NSPredicate(format:"%@ >= timestamp AND %@ <= timestamp", dateFrom, dateTo! as NSDate)

    request.returnsObjectsAsFaults = false

    do {
        let result = try context.fetch(request) 
        let durationTodayArray = result.map{$0.duration}

        print("Today's Durations: \(durationTodayArray)")

Где 'durationTodayArray' - это массив всех времен, зарегистрированных сегодня.

Извиняюсь, если на этот вопрос ответили в другом месте - я искал и не могу найти решение.

Заранее спасибо.

...