Быстрое отображение предыдущего введенного элемента в массиве - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь отобразить предыдущие введенные атрибуты упражнения в текущей тренировке. Если я иду на предыдущую тренировку, все отображается, но когда я иду на свою текущую тренировку, атрибуты предыдущего упражнения не отображаются, а метка даты показывает только текущую дату, а не предыдущую дату тренировки. Вот две функции для решения проблемы. Дайте мне знать, если мне нужно опубликовать больше.

 func lastWorkout() -> Workout? {
    if let client = currentClient(), let currentWorkout = currentWorkout(), let workouts = client.workouts as? Set<Workout> {
        // get all this client's workouts in cronological order
        let sortedWorkouts = workouts.sorted { (one, two) -> Bool in
            let scheduledTimeOfOne = one.appointment?.scheduled ?? Date(timeIntervalSince1970: 0)
            let scheduledTimeOfTwo = two.appointment?.scheduled ?? Date(timeIntervalSince1970: 0)
            return scheduledTimeOfOne > scheduledTimeOfTwo
        }
        // get the index of this workout
        let indexOfTodaysWorkout = sortedWorkouts.index(of: currentWorkout) ?? 0
        // go back one workout to find the last workout completed
        let lastWorkout: Workout? = (indexOfTodaysWorkout - 1) < 0 ? nil : sortedWorkouts[indexOfTodaysWorkout - 1]
        // and return
        return lastWorkout
    }
    return nil
}

/// Last Exercise Info to load previous exercise data
func lastExercise() -> Exercise? {
    guard let selectedExercise = currentExerciseInfo() else{
        return nil
    }
    if let exercises = lastWorkout()?.exercises as? Set<Exercise>, let pastExercise = exercises.first(where: { $0.exerciseInfo == selectedExercise }) {
        return pastExercise
    }
    return nil
}

1 Ответ

0 голосов
/ 01 мая 2018

Итак, счетчик массивов был отключен в последней функции тренировки. Вот как выглядит рабочая функция. Я все еще не показываю правильную дату. это просто дает сегодняшнюю дату.

func lastWorkout() -> Workout? {
    if let client = currentClient(), let currentWorkout = currentWorkout(), let workouts = client.workouts as? Set<Workout> {
        // get all this client's workouts in cronological order
        let sortedWorkouts = workouts.sorted { (one, two) -> Bool in
            let scheduledTimeOfOne = one.appointment?.scheduled ?? Date(timeIntervalSince1970: 0)
            let scheduledTimeOfTwo = two.appointment?.scheduled ?? Date(timeIntervalSince1970: 0)
            return scheduledTimeOfOne > scheduledTimeOfTwo
        }
        // get the index of this workout
        let indexOfTodaysWorkout = sortedWorkouts.index(of: currentWorkout) ?? 0
        // go back one workout to find the last workout completed
        let lastWorkout: Workout? = sortedWorkouts.count < 2 ? nil : sortedWorkouts[indexOfTodaysWorkout + 1]
        // and return
        return lastWorkout
    }
    return nil
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...