笔记,从OC翻译成swift。遇到点问题
NSDictionary 和 nameRange 上有点小问题
NSString *plainText = [NSString stringWithFormat:@"%@ test" , @"click"];
NSMutableAttributedString *styleText = [[NSMutableAttributedString alloc] initWithString:plainText]
NSDictionary *attr = @{NSFontAttributeName: [UIFont boldSystemFontOfSize : statusLabel.font.pointSize ]};
NSRange nameRange = [plainText rangeOfString: title ]
[styleText setAttributes:attr range:nameRange ]
statusLabel.attributeText = styleText;
这是OC的代码,转成swift的时候有点问题,第1是NSDictionary不知道怎么写了。。。array好象无法一下子转成NSDictionary,第2就是在用rangeOfString的时候,plainText。因为是NSString,因此可以直接使用rangeOfString,但swift定义字符串时,var plainText = "test" + "click" 这是string不是NSString...
所以查了点资料最后改成下面的代码
var plainText = title! + " button pressed";
var styleText = NSMutableAttributedString(string: plainText);
var attributes : NSDictionary = [NSFontAttributeName : UIFont.boldSystemFontOfSize( statusLabel.font.pointSize )]
let nameRange : NSRange = (plainText as NSString).rangeOfString(title!);
//styleText.setAttributes(attributes, ))
styleText.setAttributes(attributes, range: nameRange);
statusLabel.attributedText = styleText;
----
上面的那个plainText as NSString就OK了。不过我需要再尝试一下,我是不是可以直接var plainText:NSString = title! + " button pressed";
[确认OK,如果真的需要用rangeOfString,应该还是在之前先得强类型一下比较好]
-----
今天算是注意了,所以下次应该可以记得,比如Int(xxxx),强制 转换, (sring as NSString) 也可以作一个转换