【问题标题】:Cannot convert value of type 'UInt32!' to expected argument type 'UIFontDescriptorSymbolicTraits'无法转换“UInt32!”类型的值到预期的参数类型'UIFontDescriptorSymbolicTraits'
【发布时间】:2016-03-15 15:15:12
【问题描述】:

我仍在尝试将 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。但我不知道,如何做到这一点。 :-(

欢迎任何帮助!

【问题讨论】:

  • 请停止添加不当标签。问题是关于 Swift 代码的问题。无论如何,这个问题与 Objective-C 无关。
  • @rmaddy: 我用的是 Objective-C 吗?

标签: xcode swift textkit


【解决方案1】:

尝试使用UIFontDescriptorSymbolicTraits(rawValue: existingTraitsWithNewTrait) 代替错误行中的existingTraitsWithNewTrait

【讨论】:

  • 嘿,Pradeep,就是这样,我明白了 ;-) 非常感谢!
猜你喜欢
  • 2016-06-04
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多