Почему метод доступного голоса класса NSSpeechsynthesier не может быть соединен с массивом строк Swift? - PullRequest
0 голосов
/ 10 мая 2018

В 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 Ответ

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

Похоже, NSSpeechSynthesizer.VoiceName является Enum с rawValue из String.Это не то же самое, что , являющийся строкой.

Попробуйте использовать

NSSpeechSynthesizer.availableVoices.map { $0.rawValue }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...