Когда я вызывал функцию, единственный аргумент, который мне нужно передать - это параметр с начала
Это не так.
Выдолжны также передать закрытие как второй параметр.Само замыкание вызывается функцией startUpdates
после выполнения своей работы и передает два параметра обратно, необязательный Data
и необязательный экземпляр Error
.
Функциональное программирование - это очень удобный способвозможность запуска произвольного кода (в замыкании).
Вы можете объявить замыкание отдельно
let result : CMPedometerHandler = { data, error in
if let error = error { print(error); return }
// do something with the data
}
startUpdates(from: Date(), withHandler: result)
или встроенное
startUpdates(from: Date(), withHandler: { data, error in
if let error = error { print(error); return }
// do something with the data
})
или с синтаксисом замыкающего замыкания
startUpdates(from: Date()) { data, error in
if let error = error { print(error); return }
// do something with the data
}