Почему метод доступного голоса класса NSSpeechsynthesier не может быть соединен с массивом строк Swift?
В статье " Работа с фреймворками Какао" Apple гласит, что фреймворки Foundation и Swift Foundation работают вместе через мост. Однако я заметил, что при попытке использовать метод класса NSSpeechSynthesizer availableVoices() он позволяет мне получить возвращенный массив NSStrings, но не Strings.
Это компилируется и работает просто отлично:
let voices = NSSpeechSynthesizer.availableVoices as [NSString]
print(voices)
Однако это не скомпилируется:
let voicesTwo = NSSpeechSynthesizer.availableVoices as [String]
Почему это не сработает, если документация voiceName показывает, что VoiceName является строковым свойством?
Я вижу термин "rawValue" в документации к VoiceName, так как причина в том, что это какое-то перечисление?
1 ответ
Решение
Это выглядит как NSSpeechSynthesizer.VoiceName
является Enum
с rawValue
из String
, Это не то же самое, что быть строкой.
Попробуйте использовать
NSSpeechSynthesizer.availableVoices.map { $0.rawValue }