[英]Underline part of a string using NSMutableAttributedString in iOS 8 is not working
[英]Using NSMutableAttributedString as a Constant in iOS
我刚开始学习Swift,遇到了一些我不了解的东西。 在一个教程中,作者在常量内创建了NSMutableAttributedString
。 后来,该常数被更改。 我不明白的是如何做到这一点而不会出现任何错误。 NSMutableAttributedString
是否由于缺少更好的术语而覆盖了常量的规则?
@IBAction func buttonPressed(sender: UIButton) {
let title = sender.titleForState(.Normal)!
let plainText = "\(title) button pressed"
let styledText = NSMutableAttributedString(string: plainText)
let attributes = [NSFontAttributeName: UIFont.boldSystemFontOfSize(statusLabel.font.pointSize)]
let nameRange = (plainText as NSString).rangeOfString(title)
styledText.setAttributes(attributes, range: nameRange)
statusLabel.attributedText = styledText
}
它与NSMutableAttributedString
无关,但与styledText
存储引用类型有关。 由于已将其定义为常量,因此无法更改其值:
styledText = NSMutableAttributedString(string: "anotherString") // Error
但是您可以更改变量指向的实例。
Swift中的let
关键字强制值类型(结构和枚举)的不变性,而不是引用类型的不变性。
Swift中的结构和枚举有两种方法:
mutating
定义 如果将结构或枚举的实例分配给可变存储(使用var
定义的var
),则可以通过调用其上的任何可变或非可变方法来随意修改其状态。
如果将其分配给不可变的存储(使用let
定义),则只能在其上调用非可变方法。 您也不能使存储存储另一个实例(即,您不能为其分配另一个结构或枚举)。
类是引用类型,没有突变或非突变方法的概念。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.