, как и код ниже, когда я хочу вернуть данные шагомера с помощью метода для некоторой попустительности, но метод, возвращенный ранее, чем данные будут восстановлены. Я думаю, это может быть проблема параллелизма. Как я могу правильно вернуть данные для использования в будущем? ThxПроблема параллелизма iOS: возвращаемый метод до получения данных шагомера
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
}
thx.I сделал так, он мог правильно напечатать данные, но как бы я вернуть данные? 'func testQueryPedometerTodayTotalData() -> CMPedometerData { var todayData: CMPedometerData? self.queryPedometerTodayTotalData {(data) in todayData = данные } возвращение сегодняДата! } '
Это снова будет сбой –
Вы не можете вернуть его, так как он асинхронный. Вы используете его в блоке завершения. Вместо того, чтобы печатать данные, вы можете делать с ними все, что вам нужно. – marosoaie
Так что цените. Я использую другое решение для его решения. Но я действительно хочу знать, почему я не смог получить или вернуть асинхронный результат? Я использовал переменную экземпляра, чтобы сохранить результат в блоке и вернуться, не могли бы вы объяснить, почему это не работает, thx again –