微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何显示过去一周或一个月的CoreData数据?

如何解决如何显示过去一周或一个月的CoreData数据?

我有数据保存为饭菜;早餐,午餐,晚餐和小吃。我正在尝试返回上周每一天所有进餐的热量总计。

膳食数据使用.date保存如下:

func saveBreakfast() {
             
         
    let newBreakfastItem = BreakfastItem(context: self.moc)
    newBreakfastItem.id = UUID()
    newBreakfastItem.name = self.item.name
    newBreakfastItem.calories = Int32(self.totalCalories)
    newBreakfastItem.carbs = Int32(self.totalCarbs)
    newBreakfastItem.protein = Int32(self.totalProtein)
    newBreakfastItem.fat = Int32(self.totalFats)
    newBreakfastItem.date = self.dateAdded




    do {
        if self.mocB.hasChanges { // saves only if changes are made
            try? self.mocB.save()
     
        }
     
    }
 }



func saveLunch() {
  

    let newLunchItem = LunchItem(context: self.moc)
    newLunchItem.id = UUID()
    newLunchItem.name = self.item.name
    newLunchItem.calories = Int32(self.caloriesPerServing)
    newLunchItem.carbs = Int32(self.carbsPerServing)
    newLunchItem.protein = Int32(self.proteinPerServing)
    newLunchItem.fat = Int32(self.fatsPerServing)
    newLunchItem.date = self.dateAdded

    do {
        if self.mocL.hasChanges {
            try? self.mocL.save()
        }
    }
}

我目前正在使用以下功能来尝试使其工作一天(Date()-1天,所以昨天)

func dayOneCal(at date: Date) -> NSNumber {

    
    let request1:NSFetchRequest<BreakfastItem> = BreakfastItem.fetchRequest() as! NSFetchRequest<BreakfastItem>
    let request2:NSFetchRequest<LunchItem> = LunchItem.fetchRequest() as! NSFetchRequest<LunchItem>
    let request3:NSFetchRequest<DinnerItem> = DinnerItem.fetchRequest() as! NSFetchRequest<DinnerItem>
    let request4:NSFetchRequest<SnackItem> = SnackItem.fetchRequest() as! NSFetchRequest<SnackItem>


    let startDate = Calendar.current.startOfDay(for: date)
    var components = DateComponents()
    components.day = -1
    components.second = -1
    let endDate = Calendar.current.date(byAdding: components,to: startDate)!

    request1.predicate = nspredicate(format: "date >= %@ AND date <= %@",startDate as NSDate,endDate as NSDate)

    request2.predicate = nspredicate(format: "date >= %@ AND date <= %@",endDate as NSDate)

    request3.predicate = nspredicate(format: "date >= %@ AND date <= %@",endDate as NSDate)

    request4.predicate = nspredicate(format: "date >= %@ AND date <= %@",endDate as NSDate)



    let totalDailyBreakfastCals = BreakfastItems.map({$0.calories}).reduce(0,+)
    let totalDailyLunchCals = LunchItems.map({$0.calories}).reduce(0,+)
    let totalDailyDinnerCals = DinnerItems.map({$0.calories}).reduce(0,+)
    let totalDailySnacksCals = SnackItems.map({$0.calories}).reduce(0,+)

    let totalDailyCals = totalDailyBreakfastCals + totalDailyLunchCals  + totalDailyDinnerCals + totalDailySnacksCals


    return totalDailyCals as NSNumber



}

任何帮助将不胜感激,在此先感谢您!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。