【问题标题】:Coredata NSpredicate predicate date in swiftswift中的Coredata NSpredicate谓词日期
【发布时间】:2020-01-11 03:28:08
【问题描述】:

一个古老的经典问题,但我得到了。

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
}

它总是返回所有数据。我怎么能有一天呢?

【问题讨论】:

  • 如何创建 startDate 和 endDate 以及它们的值是什么?

标签: swift core-data nsdate nspredicate


【解决方案1】:

当然它总是返回所有数据,因为您忽略了自定义获取请求。

替换

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 []
    } 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多