swift新版本相对于swift1.0版本改动大全

Posted zlj_jeck

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift新版本相对于swift1.0版本改动大全相关的知识,希望对你有一定的参考价值。

前言:

        Swift发展迅速,为了紧跟潮流,小编也学习了swift,但小编学习了1.0版本,现在发现新版本和旧版本有很多的改进和区别,相信苹果官方也是在持续改进swift吧,现在小编就对遇到的改动做一个总结,以便能给遇到相同或者相似问题的小伙伴们提供一些帮助.废话不多讲了,进入正题.


这样更直观一些


//swift新版本相对于swift1.0版本的一些改动

        

        //1.println废弃改为print

        

        //2.遍历数组

        for (index, value)in enumerate(shoppingList)

        //改为

        for (index, value)in shoppingList.enumerate()

        

        //3.数组添加元素的方法

        //shoppingList += "柚子"已经废弃,数组不能"+="字符串了

        //可用

        shoppingList += ["柚子"]

        

        //4.空数组的声明

        //let emptyArray1: Array = []//废弃

        //var emptyArray2 = Int[]()//废弃

        //可以用

        let emptyArray1:Array = [Int]()//用其声明空数组

        

        //5.非空数组

        //var threeDoubles = Double[](count: 3, repeatedValue: 0.0)   //[0.0, 0.0, 0.0]//废弃

        //可以用下面方法定义

        var threeDoubles = [Double](count:3, repeatedValue:0.0)   //[0.0, 0.0, 0.0]

        

        //6.可选类型

        let possibleNumber ="123"

        //let convertedNumber: Int? = possibleNumber.toInt() //toInt()函数已废弃

        //可以用下面的方法代替

        let convertenNumber:Int? =Int(possibleNumber)

        

        //7.字符和字符,字符串和字符已经不能相加了

        

        let dog: Character ="dog"

        let cow:Character ="cow"

        //let dogCow = dog + cow //已废弃

        //可以先把字符转换成字符串再相加(另外注意:要么加号前后都用空格隔开,要么都不要隔开,如果只隔开一边,swift中会报错)

        let dogCow =String(dog) + String(cow)

        

        //8.半封闭区域运算符(包头不包尾), (a..b)定义了范围从ab,包含a的值,但是不包含b的值,已经废弃可以

        let names = ["Anna","Alex", "Brian","Jack"]

        let count = names.count

        //for i in 0..count //已废弃

        //可以用封闭范围运算符, (a...b)定义了一个范围从ab,并且包含ab的值

        for iin 0...count

        

        //9.字符串中以下的这些特殊字符已经转译无效

        //单字节Unicode字符,\\xnn,其中nn是两个十六进制数

        //双字节Unicode字符,\\unnnn,其中nnnn是四个十六进制数

        //四字节Unicode字符,\\Unnnnnnnn,其中nnnnnnnn是八个十六进制数

        //例如:

        //let dollarSign = "\\x24" //$        //单字节转译已无效

        //let blackHeart = "\\u2665"   //♥    //双字节转译已无效

        //let sparkHeart = "\\U0001F496" //(这里是个红心)//四字节转译已无效

        

        //10.countElements计算一个字符串中的字符的数量,此函数已废弃

        let countStr = "wu xian hu lian"

        //println("countStr count is \\(countElements(countStr))")//报错

        //可使用下面方法代替

        print("countStr count is \\(countStr.characters.count)")

        

        //11.for - in 遍历字符串

        //这种写法已废弃

        //for character in "hello"

        //    print(character)

        //

        //可以这样写,使用characters

        for character in ("hello").characters

            print(character)

       

        

        //12.do-while循环已废弃,repeat-while来替换

        var vb = 1

        //do

        //    print("do while index is \\(vb)")

        //    vb++

        //while vb < 5

        //更改为

        repeat

            print("repeat while index is \\(vb)")

            vb++

        while vb < 5

        

        //13.函数可以有多个输入参数,写在圆括号中,用逗号分隔

        func minusResult(start: Int, end: Int) -> Int

            return end - start

       

        //函数的调用

        minusResult(1,10//这样调用的方法已经废弃

        //改成这样写(多个参数时,除了第一个参数以外,其他参数必须写参数名)

        minusResult(1,end: 10)

        

        //14.简写外部参数名已经废弃

        //如果你需要提供外部参数名,但是局部参数名已经定义好了,那么你不需要写两次这些参数名。相反,只写一次参数名,并用井号(#)作为前缀就可以了(1.0版本)。这告诉 Swift 使用这个参数名作为局部和外部参数名。

        //func containsCharacter(#string: String, #characterToFind: Character) -> Bool //#已废弃

        //可以这样写(除了第一个外部参数名不可省略,其他外部参数名可以省略,并且局部参数名可以作为外部参数名)

        func containsCharacter(string1 string: String, characterToFind: Character,chara:Character ) -> Bool

        //这样定义参数名,使得函数体更为可读,清晰,同时也可以以一个不含糊的方式被调用

        let containsAVee = containsCharacter(string1: "qwertyuiop", characterToFind: "y",chara:"r")

        print(containsAVee)

        

        //15.sort函数

        //var reversed = sort(names,backwards)//这种写法已经废弃

        //可以这样写

        var reversed = names.sort(backwards)

        

        //16.猜测还有很多入sort函数的写法

        //sort(names,backwards)都已废弃,而被改成

        //names.sort(backwards)

        //如果遇到类似情况可以试一下

以上是关于swift新版本相对于swift1.0版本改动大全的主要内容,如果未能解决你的问题,请参考以下文章

Swift 语言的设计错误有哪些?

第十四天

DAY14

CSS/HTML 使文本相对于图像大小保持不变?

如何将剪辑路径的文本相对于视口居中并显示所有剪辑路径的文本?

Swift之需要注意的基本运算符和高级运算符