- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
像下面的代码,当我想通过一个方便的方法返回一个计步器数据时,但是方法返回早于数据被检索。我认为这可能是一个并发问题。如何以正确的方式返回数据以供将来使用?Thx
func queryPedometerTodayTotalData() -> Int {
var pedometerDataOfToday: CMPedometerData?
self.queryPedometerDataFromDate(NSDate.today()!, toDate: NSDate(), withHandler: { (pedometerData, error) in
pedometerDataOfToday = pedometerData!
print("this print after got data in a background thread:\(pedometerDataOfToday)")
})
print("This should print before last print, and there haven't got the data now: \(pedometerDataOfToday)")
return pedometerDataOfToday
}
最佳答案
关于并发问题,您是对的。您应该在 queryPedometerDataFromDate
的处理程序中使用结果。实现此目的的一种方法是为您的 queryPedometerTodayTotalData
方法使用完成 block ,而不是让它返回一个值,如下所示:
func queryPedometerTodayTotalData(completion:((CMPedometerData?)->())) {
var pedometerDataOfToday: CMPedometerData?
self.queryPedometerDataFromDate(NSDate.today()!, toDate: NSDate(), withHandler: { (pedometerData, error) in
pedometerDataOfToday = pedometerData!
completion(pedometerData)
})
}
func testQueryPedometerTodayTotalData() {
self.queryPedometerTodayTotalData { (data) in
print(data)
}
}
关于iOS 并发问题 : method returned before got the pedometer data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37066491/
我是 Drools(版本 6.3)的新手,在制定特定规则时遇到一些困难。我有一个名为 Steps 的类,其中只有一个简单的字段 double steps;。每个步骤事件代表自上一个事件以来所采取的步骤
我不确定这是 Expo 还是 iOS 计步器的问题,但我注意到下面描述的奇怪行为。 假设我们有时间间隔 t1 -t2由 t0 分隔,即t1 < t0 < t2 。现在,如果我们在每个间隔中计算步数:
我制作了一个计步器应用程序...我想知道如何在模拟器上测试这个应用程序,因为我没有安卓设备 最佳答案 您可以导航到 Emulator 设置,然后在 Virtual sensors 下选择 Accele
像下面的代码,当我想通过一个方便的方法返回一个计步器数据时,但是方法返回早于数据被检索。我认为这可能是一个并发问题。如何以正确的方式返回数据以供将来使用?Thx func queryPedomete
我是一名优秀的程序员,十分优秀!