我可以在完成处理程序中保存价值吗

Posted

技术标签:

【中文标题】我可以在完成处理程序中保存价值吗【英文标题】:Can I save value in a completion Handler 【发布时间】:2014-11-22 05:30:51 【问题描述】:

事情就是这样,我想将今天的步骤保存到完成处理程序中的核心数据中。但是当我加载这个值时,编译器显示它为零。有什么解决办法吗?

 func fetchDataOfQuantityType(startDate: NSDate, endDate: NSDate, quantityType: HKQuantityType, completion:((NSArray, NSError!) -> Void)!)  

    // initial a predicate with startDate and endDate
    let predicate = HKQuery.predicateForSamplesWithStartDate(startDate, endDate: endDate, options: HKQueryOptions.StrictStartDate)

    // initialize a HKStatisticsQuery
    let query: HKStatisticsQuery = HKStatisticsQuery(quantityType: quantityType, quantitySamplePredicate: predicate, options: HKStatisticsOptions.CumulativeSum, completionHandler:  (query, results, error) in

        if error != nil  // if there is an error print it
            println("there is a \(error) occur")
            return
        
        // Mark: - Saving the data in to Core data

        var todaySteps = results.sumQuantity().doubleValueForUnit(HKUnit.countUnit())
        println("The totalstep for today is \(todaySteps)")
            var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
            var context: NSManagedObjectContext = appDel.managedObjectContext!
            var newUser = NSEntityDescription.insertNewObjectForEntityForName("User", inManagedObjectContext: context) as NSManagedObject
            newUser.setValue(todaySteps, forKey: "todaysteps")
            )
    self.healthstore.executeQuery(query)

【问题讨论】:

【参考方案1】:

您似乎没有保存上下文。试试

var error: NSError?
context.save(&error)

设置值之后。

【讨论】:

以上是关于我可以在完成处理程序中保存价值吗的主要内容,如果未能解决你的问题,请参考以下文章

从子查询中保存价值并在以后重用它?

SwiftUI - 我可以在按钮操作中使用完成处理程序吗?

员工如何在人工智能时代证明其IT工作价值

使用迁移中的 Sequelize bulkUpdate,我可以访问 `this` 来生成价值吗?

我可以将表格编程为看起来像一张桌子吗

清除数据后从共享偏好中获取价值