Я пытаюсь создать набор случайных упражнений.Я сделал свою структуру Hashable и Equatable, следуя инструкции, приведенной здесь https://medium.com/@JoyceMatos/hashable-protocols-in-swift-baf0cabeaebd, и она работает отлично, поэтому она готова быть помещенной в набор <>.
Когда я использую массив для сбора тренировкиупражнения, как показано ниже, работает нормально.Но когда я переключаюсь на Set <>, я получаю сообщение об ошибке "не могу преобразовать значение типа [_] в указанный тип" Set ". Что такое" Sets ", что означает, что вы не можете отобразить так же, как Array"?
func generateWorkout() {
let allPossibleExercises = masterExerciseArray
let numberOfExercisesKey = Int(arc4random_uniform(4)+3)
//error triggers on the line below if I switch [WorkoutExercise]
//for Set<WorkoutExercise> (which conforms to Hashable/Equatable
let workoutSet : [WorkoutExercise] = (1...numberOfExercisesKey).map { _ in
let randomKey = Int(arc4random_uniform(UInt32(allPossibleExercises.count)))
return WorkoutExerciseGenerator( name: allPossibleExercises[randomKey].name,
maxReps: allPossibleExercises[randomKey].maxReps).generate()
}
print (workoutSet)
}
Здесь есть ответ с похожим сообщением об ошибке Невозможно преобразовать значение типа '[_]' в указанный тип 'Array' , но мой массив не будет пустымкак в этом примере, поэтому я не думаю, что это одна и та же основная причина?
ОБНОВЛЕНИЕ: для тех, у кого возникла та же проблема, вы можете использовать массив, но потом просто преобразовать массив в набор, еслиправильные элементы: Hashable / Equatable