swift中的Coredata NSpredicate谓词日期
一个古老的经典问题,但我明白了swift中的Coredata NSpredicate谓词日期,swift,core-data,nsdate,nspredicate,Swift,Core Data,Nsdate,Nspredicate,一个古老的经典问题,但我明白了 func callThisDay(startDate:Date, endDate:Date) -> [Login]{ var datas = [Login]() let fetchRequest:NSFetchRequest<Login> = Login.fetchRequest() let predicate = NSPredicate(format: "date >= %@ AND date < %@",
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
}
func callThisDay(开始日期:日期,结束日期:日期)->[登录]{
变量数据=[Login]()
let fetchRequest:NSFetchRequest=Login.fetchRequest()
let predicate=NSPredicate(格式:“日期>=%@和日期<%@”,argumentArray:[startDate,endDate])
fetchRequest.predicate=谓词
做{
让allData=try viewContext.fetch(Login.fetchRequest())
对于allData中的数据{
data.append(数据作为!登录)
}
}抓住{
打印(错误)
}
返回数据
}
它总是返回所有数据。我怎么能只得到一天的时间呢?当然,它总是返回所有数据,因为您忽略了自定义获取请求
替换
let allData = try viewContext.fetch(Login.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 []
}
}
func callThisDay(开始日期:日期,结束日期:日期)->[登录]{
let fetchRequest:NSFetchRequest=Login.fetchRequest()
fetchRequest.predicate=NSPredicate(格式:“日期>=%@和日期<%@”,起始日期为NSDate,结束日期为NSDate)
做{
返回try viewContext.fetch(fetchRequest)
}抓住{
打印(错误)
返回[]
}
}
如何创建startDate和endDate,其值是什么?
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 []
}
}