Вызов внешней функции с помощью WatchKit с помощью сенсорного MenuItem

Мне нужно реализовать принудительное прикосновение WatchKitMenuItem позвонитьsaveWorkout() метод, который находится в отдельном классе, который не подклассWKInterfaceController.

Я понимаю, что каждому классу нужен хотя бы один назначенный инициализатор. Я предполагаю, что это ключ?

Кстати, мой "saveSession () достигнут"оператор print записывается в консоль при использовании sim, но не при использовании устройства. Все остальные операторы print записываются в консоль даже при использовании устройства. Немного странно.

Мои попытки инициализации приводят к различным ошибкам, таким как:

1.фатальная ошибка: использование неосуществленного инициализатора 'init ()' для класса 'DashboardController'

2. Отсутствие аргумента для параметра context в вызове.

Dashboard.swift

class DashboardController: WKInterfaceController {

@IBOutlet var timerLabel: WKInterfaceTimer!
@IBOutlet weak var milesLabel: WKInterfaceLabel!

// var wSM: WorkoutSessionManager

//init(wSM: WorkoutSessionManager) {
//  self.wSM = wSM
//  super.init()
//  }


override func awakeWithContext(context: AnyObject?) {
    super.awakeWithContext(context)

    addMenuItemWithItemIcon(.Accept, title: "Save", action: #selector(DashboardController.saveSession))
}

override func willActivate() {
    super.willActivate()
    print("Dashboard controller reached")
}

func saveSession() {
    //wSM.saveWorkout()
    print("saveSession() reached")    
    }

WorkoutSessionManager.swift

class WorkoutSessionContext {

let healthStore: HKHealthStore
let activityType: HKWorkoutActivityType
let locationType: HKWorkoutSessionLocationType

init(healthStore: HKHealthStore, activityType: HKWorkoutActivityType = .Other, locationType: HKWorkoutSessionLocationType = .Unknown) {

    self.healthStore = healthStore
    self.activityType = activityType
    self.locationType = locationType
}
}

protocol WorkoutSessionManagerDelegate: class {
// ... protocol methods
}

class WorkoutSessionManager: NSObject, HKWorkoutSessionDelegate {

let healthStore: HKHealthStore
let workoutSession: HKWorkoutSession

init(context: WorkoutSessionContext) {
    self.healthStore = context.healthStore
    self.workoutSession = HKWorkoutSession(activityType: context.activityType, locationType: context.locationType)
    self.currentActiveEnergyQuantity = HKQuantity(unit: self.energyUnit, doubleValue: 0.0)
    self.currentDistanceQuantity = HKQuantity(unit: self.distanceUnit, doubleValue: 0.0)

    super.init()

    self.workoutSession.delegate = self
}

func saveWorkout() {
    guard let startDate = self.workoutStartDate, endDate = self.workoutEndDate else {return}

// ...code...

Ответы на вопрос(1)

Ваш ответ на вопрос