gpt4 book ai didi

iOS 并发问题 : method returned before got the pedometer data

转载 作者:搜寻专家 更新时间:2023-10-31 22:46:32 26 4
gpt4 key购买 nike

像下面的代码,当我想通过一个方便的方法返回一个计步器数据时,但是方法返回早于数据被检索。我认为这可能是一个并发问题。如何以正确的方式返回数据以供将来使用?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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com