Почему метод доступного голоса класса 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 }
Другие вопросы по тегам