Swift之两三见(一)

作者: RandomThoughts | 来源:发表于2016-06-13 21:08 被阅读0次

    1、Swift与OC的区别

    // 在Swift当中没有main函数的概念;没有.m和.h文件,一个类就是一个.swift文件

    // 在swift当中可以不写分号,但是如果当一行当中有多条语句的时候就必须写分号

    // 在swift当中采用print函数来代替NSLog函数进行打印数据,print函数的效率要比NSLog高,而且在print函数中没有占位符的概念,直接使用"\( )"来进行参数的插入

    2、Swift中的变量和常量

    // 在swift中分别用 var 和 let 来表示变量和常量

    // 格式 : let / var  名字: 数据类型 = 初始值

    // 在swift中也可以不用明确的指出变量和常量的类型 xCode会根据你所提供的初值自行推导出具体类型

    注:常量一经赋值之后就不允许改变;在swift中进行运算是需要把参与运算的量强转成同一类型,不同数据类型不能做运算,如:

    var a = 10

    var b = 10.2

    var c = a + Int(b)

    3、swift中常用的数据类型

    整型:Int   浮点型:Double  布尔型:BOOL(swift中的BOOL值为true(真)和false(假))

    字符型:character  字符串型:string(在swift中采用string表示一个字符串,在双引号中赋值)

    4、swift中的字符串

    var str = "hello"

    var str1 = "world"

    //长度:str.characters.count

    //字符串的拼接采用 += (拼接字符使用append函数):str += str1 (打印结果为:helloworld)

    //判断是否相等采用 == :str == "hello"

    //字符串前缀和后缀:str.hasPrefix(前缀)   str.hasSuffix(后缀)

    // 大小写转换: str.uppercaseString(大写)   str.lowercaseString(小写)

    // 字符串string支持遍历:for item in str.characters

    注:swift里面的字符串可以和OC里面的字符串进行相互转换:let str2 = str1 as NSString

    5、swift中的数组

    在swift中数组类型是Array,创建数组(字典)时必须明确指出数组里面元素的类型

    var array:[string] = ["1","2","3"]

    //添加元素:array.append("4")

    //删除的方法

    array.removeAll()

    array.removeAll(keepCapacity:Bool)

    array.removeAtIndex(index: Int)

    array.removeFirst()

    array.removeFirst(n: Int)

    array.removeLast()

    array.removeRange(subRange: Range)

    注:

    array.removeAll()删除数组并清除所占空间

    array.removeAll(keepCapacity:Bool)删除数组,根据Bool的给的值来进行判断是否清除所占空间

    //遍历

    for item in array (普通遍历)

    for (index, value) in array.enumerate()(元祖遍历)

    6、swift中的字典

    var dict:[String:AnyObjrct] = ["1":"a","2":"b"]

    // 增加元素和更新字典

    dict["3"] = "c" 如果key值存在就是一个更新的操作,如果key值不存在就是一个增加的操作

    //删除

    dict0.removeAtIndex(dict.indexForKey("2")!)

    dict0.removeValueForKey("1")

    //合并两个字典

    for item in dict.keys {

    dict1[item] = dict[item]

    }

    // 元祖遍历

    for (key,value) in dict.enumerate()

    7、swift中的枚举

    swift中一个枚举成员不局限于关联整型数据,也没有默认值。如果枚举关联的是一个整型数据的话,系统会对枚举值根据前面的值进行累加;如果枚举关联的是基本类型中非整型数据类型的话,就必须给出所有的枚举关联值。如果一个枚举类型已经确定的话,下次赋值的时候可以通过 . 语法再次进行赋值

    enum Month:String{

    //    两种赋值方式

    第一种//    case January, February, Match

    第二种// case January = "a"

                 case February = "b"

                 case Match = "c"

    }

    var month = Month.January

    month = .Match

    print("month = \(month)")

    print(month.rawValue)//打印枚举对应的值

    8、swift中的可选类型

    // 可选类型

    // 概念:如果一个值可能有值,也可能为nil,那么这个变量/常量就是一个可选类型,可选类型用 ?标识出来

    // 如果打印数据被Optional字样包含的话说明打印了一个可选类型

    // 可选类型不能直接参与运算,参与运算之前必须强制解包,强制解包用!标示

    注:在对一个可选类型进行强制解包之前必须确认这个可选值不为nil。

          在模型里面所有的基本数据类型不可以为可选类型,否则的话在字典转模型的话找不到这个key,给默认值0

    var a1:Int? = 21

    print(a1)

    let b1 = 10

    let c = a1! + b1

    print(c)

    9、swift中的控制流

    // 控制流

     注:if后面的小括号可以省略,大括号不能省略。

           swift中if后面的条件语句没有“非0即真”的概念

    /*

    let a = 10

    if (a > 0) {

    print("a > 0")

    }

    */

    // 可选类型的判断 if - let

    // if - let:先判断可选类型是否为空,不为空创建一个局部常量来接收此时可选类型的值,在执行代码块,否则不执行代码块

    /*

    let a:Int? = 10

    if let b = a{

    print("b = \(b)")

    }

    // if-let-where

    // where是对定义出来的常量再做一层判断

    if let c = a where c > 5 {

    print("a > 5")

    }

    // guard 守护

    // 是判断可选类型是否有值,没值的话执行else的代码块,有值的话不执行代码块,往下面执行

    func demo() {

    var a:Int? = 12

    guard let d = a else {

    print("a = nil")

    return

    }

    print("d = \(d)")

    }

    demo() //调用函数

    //  ?  !    ??-> 空运算标识符

    // ??-->如果可选类型有值的话,会帮我们进行强制解包之后参与运算,如果为nil的话则提供一个默认值给我们

    /*

    var value:Int?

    let value1 = (value ?? 5) + 20

    print("value1 = \(value1)")

    */

    // switch

    // switch 后面的小括号可以省略

    // case 后面的break可以不写,不会造成穿透的效果

    // 默认default必须添加,而且只能添加在最后面

    // case后面至少有一条执行语句,case后面的大括号可以省略不写

    // switch 不再像OC那样只局限于整型的选择

    /*

    let score = "优"

    switch score

    {

    case "优":

    print("a = 2")

    case "良" :

    print("a = 3")

    default:

    print("a = 4")

    }

    let a = 10

    switch a {

    case 2:

    print("a = 2")

    case 3:

    print("a = 3")

    case 10:

    print("a = 10")

    default:

    print("a = nil")

    }

    */

    10、swift中的循环

    // 循环

    /*

    * for循环

    */

    // for 后面的小括号不能写,大括号必须加上

    /*

    for i in 0...10 {//[0,10]

    print(i)

    }

    */

    /*

    for i in 0..<10 {//[0,10)

    print(i)

    }

    */

    /*

    * while循环

    */

    /*

    var i = 10

    while i > 1 {

    print(i)

    i--

    }

    */

    注:do-while不存在,取代的是repeat-while

    /*

    var i = 10

    repeat{

    print(i)

    i--

    }while i > 5

    */

    相关文章

      网友评论

        本文标题:Swift之两三见(一)

        本文链接:https://www.haomeiwen.com/subject/sjyydttx.html