У меня есть этот код, чтобы получить историческую активность при использовании CoreMotionActivity.
func buildActivityArray() -> Array<Any> {
let now = Date()
let then = Date().addingTimeInterval(-3600)
var motionManager: CMMotionActivityManager!
motionManager = CMMotionActivityManager()
var activityList: [Any] = []
motionManager.queryActivityStarting(from: then, to: now, to: .main) { motionActivities, error in
if let error = error {
print("error: \(error.localizedDescription)")
return
}
motionActivities?.forEach { activity in
if activity.confidence == .medium || activity.confidence == .high {
if activity.stationary {
activityList.append("stationary")
activityList.append(Int(activity.timestamp))
} else if activity.walking {
activityList.append("walking")
activityList.append(Int(activity.timestamp))
} else if activity.running {
activityList.append("running")
activityList.append(Int(activity.timestamp))
}
}
}
print("** activityList = ", activityList)
}
print("* activityList = ", activityList)
return(activityList)
}
Первый оператор print возвращает массив с данными, но 2-й оператор печати всегда пуст,Похоже, что 2-й оператор печати выполняется до того, как закрытие motionManager.queryActivityStarting завершит выполнение, и, следовательно, вернет пустой массив.
Как дождаться завершения закрытия перед выполнением 2-го оператора печати?
Спасибо за вашу помощь