获得徽章 0
关注了标签 OpenCV OpenCV
大前端研发
大前端研发
大前端研发
赞了这篇沸点
support.996.ICU:GitHub 新热点--微软和GitHub员工宣布支持996.ICU运动,GitHub 地址:github.com
GitHub爱好者于2019-04-23 11:57发布的图片
17
赞了这篇沸点
最近面试了很多 30+ 的 iOS 程序员,仔细反思了下,最后得出了一个结论:再干几年我就告老还乡,去养猪。这是我很认真反思后得出的结论,大家可以参考下。说真的,30 岁以后的程序员,在面试过程中拼命表现想要证明自己的样子,太心酸了😰😰😰
mmoaay于2019-04-23 10:57发布的图片
46
赞了这篇沸点
#分享一个Swift的小知识点#

随着Swift5的发布,周围开始正式学习Swift的开发者变多了,今天分享一个关于Swift中String的知识点,对准备从Objc迁移到Swift的开发者来说,应该有一些帮助。

在Objc中读取NSString长度使用的是.length,length返回的是基于UTF-16的长度。而在Swift中读取String的长度,通常使用的是count,而count本身返回的是characters.count,只是Unicode字符个数。这两者的区别在纯文本中看不出来,但是包含Emoji的时候就十分明显了。


举个例子:“😆😆😆😆😆😆”,用Objc的length读取返回的是12,而用Swift的count读取返回的是6,这在做一些富文本插入操作时,得到的结果绝不会是你想要的。


不过不用担心,Swift有专门的utf16.count来对应NSString的.length,在使用的时候只需要string.utf16.count就可以得到与Objc中length相同的结果。但是这么长显然太繁琐了是不是,用extension解决掉:


extension String {
var length: Int {
get {
return self.utf16.count
}
}
}


// 使用
let emoji = “😆😆😆😆😆😆”
emoji.length // return 12

这样一来,在Swift的String中也可以保持和Objc中NSString相同的书写习惯了
展开
ShevaKuilin于2019-04-23 11:59发布的图片
ShevaKuilin于2019-04-23 11:59发布的图片
ShevaKuilin于2019-04-23 11:59发布的图片
2
大前端研发
下一页
个人成就
文章被点赞 925
文章被阅读 62,242
掘力值 2,310
收藏集
4
关注标签
64
加入于