Swift - String与NSString的区别,以及各自的使用场景
2015-09-28 11:57
351 查看
String是Swift里新增加的类型,它与原来的NSString可以很方便地互相转换。但在实际开发中,我们该如何选择?
1,能使用String类型就尽量使用String类型,原因如下:
(1)现在Cocoa里所有的API都能接受和返回String类型,所以也没必要特地转换下。
(2)Swift的String是struct,而NSString类是NSObject,所以String更符合字符串“不变”这一特性。同时,在不触及NSString特有操作和动态特性的时候,使用String的方法,在性能上也会有所提升。
(3)由于String实现了像CollectionType这样的接口,所以有些Swift的语法特性只有String才能使用,而NSString却没有。
比如for...in的枚举遍历所有字符
2,要使用NSString的情况
(1)String有hasPrefix/hasSuffix方法用来判断是否以某字符串开头或结尾,但却没有containsString方法判断内部是否包含另一个字符串。但这个方法NSString却有,所有我们只能先将String转换成NSString。
(2)String与Range配合比较麻烦,比如下面截取字符串的一部分,分别用转换成NSString再截取和直接使用String截取做演示,大家可以自行比较。(这个也只是麻烦些,其实问题也不大)
1,能使用String类型就尽量使用String类型,原因如下:
(1)现在Cocoa里所有的API都能接受和返回String类型,所以也没必要特地转换下。
(2)Swift的String是struct,而NSString类是NSObject,所以String更符合字符串“不变”这一特性。同时,在不触及NSString特有操作和动态特性的时候,使用String的方法,在性能上也会有所提升。
(3)由于String实现了像CollectionType这样的接口,所以有些Swift的语法特性只有String才能使用,而NSString却没有。
比如for...in的枚举遍历所有字符
(1)String有hasPrefix/hasSuffix方法用来判断是否以某字符串开头或结尾,但却没有containsString方法判断内部是否包含另一个字符串。但这个方法NSString却有,所有我们只能先将String转换成NSString。
相关文章推荐
- Swift - 使用UISearchController实现带搜索栏的表格
- Swift 2.0学习笔记(Day 18)——有几个分支语句?
- Swift中String与NSDate的互相转换
- Swift - 设置应用程序图标的提醒个数(右上角小红圈)
- Swift - AppDelegate.swift类中默认方法的介绍
- Swift - iOS应用的国际化与本地化
- Swift - 实现拨打电话
- Swift - 邮件发送功能的实现
- Swift - 短信发送功能的实现
- Swift - 添加、修改、删除通讯录联系人
- Swift - 访问通讯录联系人(使用纯代码实现)
- Swift - 访问通讯录联系人(使用系统提供的通讯录交互界面)
- Swift中闭包(closure)的使用
- Swift - 使用MapKit显示地图,并在地图上做标记
- Swift - 经纬度位置坐标与真实地理位置相互转化
- Swift - 使用CoreLocation获取设备方向(真实方向,磁极方向)
- Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)
- Swift - 手机摇晃的监测和响应
- Swift - 判断设备方向(或监听设备方向的改变)
- Swift - 使用NSURLSession加载数据、下载、上传文件