Модульные тесты NSMutableAttributedString и UITextView - PullRequest
0 голосов
/ 12 мая 2019

Я работаю над добавлением некоторых модульных тестов для NSMutableAttributedString и UITextView, но не знаю, как подойти к этой ситуации.

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

func setSpeechToTextTranscript (transcript: String)

эта функция будет получать строку, подобную этой

SpeechToText didHypothesizeTranscription: Hello
SpeechToText didHypothesizeTranscription: Hello
SpeechToText didHypothesizeTranscription: Hello
SpeechToText didHypothesizeTranscription: Hello how
SpeechToText didHypothesizeTranscription: Hello how can I
SpeechToText didHypothesizeTranscription: Hello how can I help
SpeechToText didHypothesizeTranscription: Hello how can I help you
SpeechToText didHypothesizeTranscription: Hello how can I help you

У него будет две строки, одна для предыдущего текста и транскрипция

enter image description here

обе строки имеют разные атрибуты NSMutableAttributedString

        let unfocusedTextToSpeechAttributes = createAttribute(font: self.font!, foregroundColor: getTextColorByBrightness())
        let unfocusedTextRange = NSMakeRange(0, textCache.count)

        let focusedTextToSpeechAttributes = createAttribute(font: self.font!, foregroundColor: self.getHighlightByBrightness(backgroundColor: self.backgroundColor!))
        let focusedTextRange = NSMakeRange(textCache.count + 1, transcript.count)

Мне нужно проверить атрибуты в текстовом представлении и как мне получить атрибуты, чтобы проверить, чтобы убедиться, что они правильные?

Я попытался выполнить эту функцию, чтобы получить ожидаемые 4 атрибута (не сфокусированные и у сфокусированных атрибутов есть два из этих шрифтов и цвет текста), но атрибуты UITextView имеют 2 -

func getTextAttributes() -> [NSAttributedString.Key : Any] {
    var range = NSRange(location: 0, length: text.count)

    let attributes = self.attributedText.attributes(at: 0, effectiveRange: &range)

    print("attributes count : " + String(attributes.count))

    for attribute in attributes {
        let key = attribute.key.rawValue
        let value = attribute.value

        if(key == "NSColor") {

        }
        else if(key == "NSFont") {

        }

        print(key)
    }

    return attributes
}


attributes count : 2
NSColor
NSFont

Есть указания, по которым я мог бы пойти, чтобы сохранить атрибуты в каком-то словаре, чтобы проверить, я не уверен, хочу ли я использовать / исследовать «Хранилище» (NSTextStorage или NSTextContainer), упомянутое в BestKets TextKit - WWDC 2018 или я я делаю это неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...