Swift3.0和Swift2的对比
来源:互联网 发布:elsevier sd数据库 编辑:程序博客网 时间:2024/05/18 20:50
一、String类中的API变化
除了Swift版的Cocoa框架中的API有了大范围的修改外,Swift的一些核心库也有了很大的改动。
Swift3.0中的字符串类型String在方法API上更加简洁,其中变动较大的是与下标相关的方法,列举如下:
var string = "Hello-Swift"//获取某个下标后一个下标对应的字符 char="e"//swift2.2//var char = string[startIndex.successor()]//swift3.0var char = string[string.index(after: startIndex)]//获取某个下标前一个下标对应的字符 char2 = "t"//swift2.2//var char2 = string[endIndex.predecessor()]//swift3.0var char2 = string[string.index(before: string.endIndex)]//通过范围获取字符串中的一个子串 Hello//swift2.2//var subString = string[startIndex...startIndex.advancedBy(4)]//swift3.0var subString = string[startIndex...string.index(startIndex, offsetBy: 4)]//swift2.2//var subString2 = string[endIndex.advancedBy(-5)...endIndex.predecessor()]//swift3.0var subString2 = string[string.index(endIndex, offsetBy: -5)..<endIndex]//获取某个子串在父串中的范围//swift2.2//var range = string.rangeOfString("Hello")//swift3.0var range = string.range(of: "Hello")//追加字符串操作 此时string = "Hello-Swift! Hello-World"//swift2.2//string.appendContentsOf(" Hello-World")//swift3.0string.append(" Hello-World")//在指定位置插入一个字符此时string = "Hello-Swift!~ Hello-World"//swift2.2//string.insert("~", atIndex: string.startIndex.advancedBy(12))//swift3.0string.insert("~", at: string.index(string.startIndex, offsetBy: 12))//在指定位置插入一组字符此时string = "Hello-Swift!~~~~ Hello-World"//swift2.2//string.insertContentsOf(["~","~","~"], at: string.startIndex.advancedBy(12))//swift3.0string.insert(contentsOf:["~","~","~"], at: string.index(string.startIndex, offsetBy: 12))//在指定范围替换一个字符串此时string = "Hi-Swift!~~~~ Hello-World"//swift2.2//string.replaceRange(string.startIndex...string.startIndex.advancedBy(4), with: "Hi")//swift3.0string.replaceSubrange(string.startIndex...string.index(string.startIndex, offsetBy: 4), with: "Hi")//在指定位置删除一个字符此时string = "Hi-Swift!~~~~ Hello-Worl"//swift2.2//string.removeAtIndex(string.endIndex.predecessor())//swift3.0string.remove(at: string.index(before:string.endIndex))//删除指定范围的字符 此时string = "Swift!~~~~ Hello-Worl"//swift2.2//string.removeRange(string.startIndex...string.startIndex.advancedBy(2))//swift3.0string.removeSubrange(string.startIndex...string.index(string.startIndex, offsetBy: 2))var string2 = "My name is Jaki"//全部转换为大写//swift2.2//string2 = string2.uppercaseString//swift3.0string2 = string2.uppercased()//全部转换为小写//swift2.2//string2 = string2.lowercaseString//swift3.0string2 = string2.lowercased()
需要注意,在Swift3.0中Range结构体被划分成了两种类型,Range和ClosedRange,分别用来描述左闭右开区间和闭区间,对应到运算符为0..<10和0…10。
从上面的示例代码中可以看出,String类型中的很多方法命名进行了Swift风格的简化,改动较大的一个点是关于下标index的改变,移除了两个Index下标移动的方法,使用String类型的index()方法来进行下标的移动操作,编程更加安全。
二、Array数组的更改
array数组中修改的API示例如下:
//创建大量相同元素的数组//创建有10个String类型元素的数组,并且每个元素都为字符串"Hello"//swift2.2//var array3 = [String](count: 10, repeatedValue: "Hello")//swift3.0var array3 = [String](repeating: "Hello", count: 10)//创建有10个Int类型元素的数组,且每个元素都为1//swift2.2//var array4 = Array(count: 10, repeatedValue: 1)//swift3.0var array4 = Array(repeating: 1, count: 10)var array = [1,2,3,4,5,6,7,8,9]//向数组中追加一组元素//swift2.2//array.appendContentsOf([11,12,13])//swift3.0array.append(contentsOf:[11,12,13])//向数组中的某个位置插入一个元素//swift2.2//array.insert(0, atIndex: 0)//swift3.0array.insert(0, at: 0)//向数组中的某个位置插入一组元素//swift2.2//array.insertContentsOf([-2,-1], at: 0)//swift3.0array.insert(contentsOf:[-2,-1], at: 0)//移除数组中某个位置的元素//swift2.2//array.removeAtIndex(1)//swift3.0array.remove(at: 1)//移除一个范围内的元素//swift2.2//array.removeRange(0...2)//swift3.0array.removeSubrange(0...2)//修改一个范围内的元素//swift2.2//array.replaceRange(0...2, with:[0,1])//swift3.0array.replaceSubrange(0...2, with:[0,1])//进行数组枚举遍历将输出 (0,0)(1,1)(2,2)(3,3)(4,4)//swift3.0 中将枚举属性enumerate修改为enumerated()方法for item in arrayLet.enumerated(){ print(item)}var arraySort = [1,3,5,6,7]//获取数组中的最大值//swift2.2//arraySort.maxElement()//swift3.0arraySort.max()//获取数组中的最小值//swift2.2//arraySort.minElement()//swift3.0arraySort.min()//从大到小排序//swift2.2//arraySort = arraySort.sort(>)//swift3.0arraySort = arraySort.sorted(isOrderedBefore: >)//从小到大排序//swift2.2//arraySort = arraySort.sort(<)//swift3.0arraySort = arraySort.sorted(isOrderedBefore: <)
三、Set集合中的更改
Set集合中的修改示例如下:
//创建set集合var set1:Set<Int> = [1,2,3,4]//进行下标的移动//获取某个下标后一个元素//swlft2.2//set1[set1.startIndex.successor()]//swift3.0set1[set1.index(after: set1.startIndex)]//获取某个下标后几位的元素//swift2.2//set1[set1.startIndex.advancedBy(3)]//swift3.0set1[set1.index(set1.startIndex, offsetBy: 3)]//获取集合中的最大值//swift2.2//set1.maxElement()//swift3.0set1.max()//获取集合中的最小值//swift2.2//set1.minElement()//swift3.0set1.min()//移除集合中某个位置的元素//swift2.2//set1.removeAtIndex(set1.indexOf(3)!)//swift3.0set1.remove(at: set1.index(of: 3)!)var set3:Set<Int> = [1,2,3,4]var set4:Set<Int> = [1,2,5,6]//返回交集 {1,2}//swift2.2//var setInter = set3.intersect(set4)//swift3.0var setInter = set3.intersection(set4)//返回交集的补集{3,4,5,6}//swift2.2//var setEx = set3.exclusiveOr(set4)//swift3.0var setEx = set3.symmetricDifference(set4)var set5:Set = [1,2]var set6:Set = [2,3]var set7:Set = [1,2,3]var set8:Set = [1,2,3]//判断是否是某个集合的子集 set5是set7的子集返回ture//swift2.2//set5.isSubsetOf(set7)//swift3.0set5.isSubset(of: set7)//判断是否是某个集合的超集 set7是set5的超集返回ture//swift2.2//set7.isSupersetOf(set5)//swift3.0set7.isSuperset(of: set5)//判断是否是某个集合的真子集 set5是set7的真子集返回ture//swift2.2//set5.isStrictSubsetOf(set7)//swift3.0set5.isStrictSubset(of: set7)//判断是否是某个集合的真超集 set7不是set8的真超集返回false//swift2.2//set7.isStrictSupersetOf(set8)//swift3.0set7.isStrictSuperset(of: set8)
四、基础运算符中的改变
Swift3.0中的基础运算符并无太大改动,只是移除了取余运算符的浮点数取余功能,取余运算符可以进行浮点运算本是Swift独有的一个特点,3.0版本的改变后,Swift中的”%”运算符功能将与objective-c与C语言中的取余运算符保持一致
阅读全文
0 0
- Swift3.0和Swift2的对比
- Objective-C、Swift2.3和Swift3.0在Xcode上打包大小对比
- Swift2.3 --> Swift3.0 的变化
- CGContext一些方法在swift2.3和swift3.0的一些区别
- Swift2.3适配Swift3.0
- Swift2.3适配Swift3.0
- Swift3.0 / swift2.3中dispatch_group的使用
- Swift3.0 / swift2.3中dispatch_group的使用
- Swift3.0 / swift2.3中dispatch_group的使用
- Swift3.0 /Swift2.3——dispatch_group的使用
- xcode8同时支持Swift2.3和Swift3
- Swift2.0 对比 C++
- 如何快速将Swift2.0的项目过渡到Swift3.0
- UIImage图片彩色转为灰色(swift2.0/swift3.0)
- Swift3.0 Self和self的区别
- swift3.0 问号和叹号的理解
- 学习中对比Java和Swift2.2,持续更新
- swift3.0中的自定义下拉刷新和模拟延时操作(同时和OC中的进行对比)
- Java IO流工具类
- 关于Javascript回调函数的那些事
- 20个经典MySQL面试题,全部答对月薪10k+(感觉有点难)
- WireShark抓包 图解探索网络请求过程(五层网络模型、三次握手、滑动窗口协议)
- OpenStack的基本概念与架构图(01)
- Swift3.0和Swift2的对比
- 区分深度学习与浅层学习
- Tomcat集群配置学习篇-----分布式应用
- Mysql test开头的库,所有用户在这库上都有管理员权限
- hdu6188
- Java面试准备之Java基础
- MFC中的combobox下拉列表添加了下拉项但是运行时不显示下拉列表内容。
- 简单的laravel事件
- 排序算法---希尔排序