addAttribute 在 Swift 1.2 (Xcode 6.3) 中失败

Posted

技术标签:

【中文标题】addAttribute 在 Swift 1.2 (Xcode 6.3) 中失败【英文标题】:addAttribute fails in Swift 1.2 (Xcode 6.3) 【发布时间】:2015-04-12 01:29:13 【问题描述】:

这在升级到 Swift 1.2 和 Xcode 6.3 之前有效。

var mutString : NSMutableAttributedString = NSMutableAttributedString(string: "K2")
mutString.addAttribute(kCTSuperscriptAttributeName, value:-1, range:NSMakeRange(1, 1))
var result : String = mutString.string

结果应包含字符串 K2(下标为“2”)。

但现在我得到了这个错误:

无法使用'(CFString!, value:Int, range:NSRange)' 类型的参数列表调用addAttribute

请指出正确的解决方案/文档。

【问题讨论】:

【参考方案1】:

只需在 kCTSuperscriptAttributeName 后添加“as!String”

【讨论】:

【参考方案2】:

addAttribute 接受(String, value: AnyObject, range: NSRange) 类型的参数列表。后两者似乎没问题,但你不能用这种方法使用CFString!

您必须在 Swift 1.2 中使用原生 Swift String 类型(这标志着进一步背离了其 Objective-C 传统)。将kCTSuperscriptAttributeName 的类型更改为String 应该可以解决问题。

【讨论】:

以上是关于addAttribute 在 Swift 1.2 (Xcode 6.3) 中失败的主要内容,如果未能解决你的问题,请参考以下文章

“NSAttributedString”类型的值没有成员“addAttributes”

Swift 属性标题语法

使用 Swift 在 iOS 11 中为 NSAttributedString 添加删除线

swift UIButton中文本添加下划线的方法

NSMutableAttributedString 在调用 addAttribute 方法时不能改变文本颜色

model.addAttribute() 对于每个循环