Coredata NSpredicate предикат даты в быстром - PullRequest
0 голосов
/ 11 января 2020

Старый классный c вопрос, но я получил.

func callThisDay(startDate:Date, endDate:Date) -> [Login]{
    var datas = [Login]()
    let fetchRequest:NSFetchRequest<Login> = Login.fetchRequest()
    let predicate = NSPredicate(format: "date >= %@ AND date < %@", argumentArray: [startDate, endDate])
    fetchRequest.predicate = predicate
    do{
        let allData = try viewContext.fetch(Login.fetchRequest())
        for data in allData{
            datas.append(data as! Login)
        }
    }catch{
        print(error)
    }
    return datas
}

И он всегда возвращает все данные. Как я могу просто получить день?

1 Ответ

0 голосов
/ 11 января 2020

Конечно всегда возвращает все данные , потому что вы игнорируете пользовательский запрос на выборку.

Замените

let allData = try viewContext.fetch(Login.fetchRequest())

на

let allData = try viewContext.fetch(fetchRequest)

Способ может быть упрощен

func callThisDay(startDate:Date, endDate:Date) -> [Login] {
    let fetchRequest : NSFetchRequest<Login> = Login.fetchRequest()
    fetchRequest.predicate = NSPredicate(format: "date >= %@ AND date < %@", startDate as NSDate, endDate as NSDate)
    do {
        return try viewContext.fetch(fetchRequest)
    } catch {
        print(error)
        return []
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...