Не удается преобразовать значение типа «UInt32!» к ожидаемому типу аргумента «UIFontDescriptorSymbolicTraits»

Я все еще пытаюсь преобразовать TextKit из Objective-C в Swift. Это сводит меня (и вас?) с ума :-( После исправления некоторых проблем теперь у меня проблемы с полужирным (и курсивным) шрифтом:

введите здесь описание изображения

func addOrRemoveFontTraitWithName(traitName: String, andValue traitValue: UInt32, andRange selectedRange: NSRange) {
    
    let currentAttributesDict : NSDictionary! = self.textView.textStorage.attributesAtIndex(selectedRange.location, effectiveRange: nil)
    let currentFont : UIFont = currentAttributesDict .objectForKey(NSFontAttributeName) as! UIFont
 ...
    var existingTraitsWithNewTrait : UInt32! = nil
    var changedFontDescriptor : UIFontDescriptor! = nil
    if  fontNameAttribute.rangeOfString(traitName).location == NSNotFound {
        existingTraitsWithNewTrait = fontDescriptor.symbolicTraits.rawValue | traitValue
        changedFontDescriptor = fontDescriptor.fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits.TraitBold)   
    } else {
        existingTraitsWithNewTrait =  fontDescriptor.symbolicTraits.rawValue & ~traitValue
        changedFontDescriptor = 
            fontDescriptor.fontDescriptorWithSymbolicTraits(existingTraitsWithNewTrait) // !!!!
   }

В последней строке я получаю сообщение об ошибке Невозможно преобразовать значение типа «UInt32!» к ожидаемому типу аргумента «UIFontDescriptorSymbolicTraits»

Должен ли я конвертировать UInt32 в UIFontDescriptorSymbolicTraits? Другой способ — использовать .rawValue. Но я не знаю, как это сделать. :-(

Любая помощь приветствуется!


person Ulli H    schedule 15.03.2016    source источник
comment
Пожалуйста, прекратите добавлять неуместные теги. Вопрос касается проблемы с кодом Swift. Вопрос никоим образом не про Objective-C.   -  person rmaddy    schedule 16.03.2016
comment
@rmaddy: я использую Objective-C?   -  person Ulli H    schedule 17.03.2016


Ответы (1)


Попробуйте UIFontDescriptorSymbolicTraits(rawValue: existingTraitsWithNewTrait) вместо existingTraitsWithNewTrait в строке ошибки.

person Pradeep K    schedule 15.03.2016
comment
Эй, Прадип, вот и все, и я это понял ;-) Большое спасибо! - person Ulli H; 15.03.2016