手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2014年12月12日的文章

IOS开发笔记(swift)

 笔记,从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) 也可以作一个转换