美文网首页
初次相遇---Swift

初次相遇---Swift

作者: 朵拉A萌 | 来源:发表于2016-06-12 21:39 被阅读26次

     1 . swift简介

    1.1   在swift当中没有main函数的概念。swift没有 .h 和 .m 文件,一个类只用.swift来表示。

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

            在swift当中采用 print函数来代替NSLog函数打印数据,而且苹果建议我们这样,print函数效率比   NSLog要高.在print函数里面没有占位符的概念,如果要插入参数采用 \ ( )。

     1.2  在swift当中变量和常量分别用var/let表示。

            格式:let/var 名字 = 初始值。

             在swift当中不用明确的指出变量和常量的类型,XCode会根据你的初值自行推导出具体类型            (Optional + Click )

    2 swift中常用的数据类型

     2.1  swift不存在隐式转换,不同数据类型不能做运算,做运算之前必须进行强制类型转换

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

             //swift整型和双精度浮点型相加,就需要强转一下

             let a1:Int = 2

             var a2:Double = 2.32

             let b = a1 + Int(a2)

             print("b")

            //bool布尔值只能用  true  or    false

             let a3:Bool = true     

             print("a3 = \(a3)"))

            //字符类型采用character 并且双引号赋值

            let a4:Character = "a"

           //在swift中采用String 表示一个字符串,双引号赋值,不是一个对象,是一个结构体

            var a5:String = "海贼-女帝"

           // swift   ??->空运算标示符

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

            var value:Int?

           let value1 = (value ?? 5) + 20

           print("value1 = \(value1)")

    2.2   字符串

            var str = "hello"

            1.长度

            print("长度 = \(str.characters.count)")     

            2.拼接字符串采用+=  拼接字符append函数

            var str1 = "world" 

             str += str1

             print("str = \(str)")

             let c:Character = "c"

            str.append(c)

            print("str = \(str)")

          //是否相等 ==    

           if(str1 == "world"){

           print("相等")

           }

           //前缀相等

           if(str1.hasPrefix("wo")){

           print("前缀是wo")

           }

          //后缀

          if(str1.hasSuffix("ld")) {

            print("后缀是ld")

           }

          //大小写转换

           print("str1的大写\(str1.uppercaseString)")

           let str2 = "2331THJF" 

           print("str1的大写\(str2.lowercaseString)")

          //字符串String 支持遍历

          for item in str.characters{

           print(item)

          }

          //swift里面的字符串跟OC字符串可以互相转换

           let str4 = str1 as NSString 

    2.3 数组

           在swift中数组类型是Array,创建一个数组或者字典必须明确的指出数组里面元素类型

           跟OC里面NSArray可以互相转换

           var array1:[String] = ["123","456","356"]

           //增加元素

           array1.append("888")

           print(array1)

           //删除

           array1.removeAll(keepCapacity: true) 

          //遍历分两种:普通遍历和云组遍历

          //普通遍历

           for item in array1{

           print(item)

           }

          //云组遍历  //enumerate(array)Xcode 2.2之前的写法

           for(index, value)in array1.enumerate() {

          print("index = \(index),value = \(value))")

          }

          //数组个数 :array1.count

    2.4 字典

           var dict0:[String:AnyObject] = ["1":"a", "2":"v", "3":"c"]

           var dict1:[String:AnyObject] = ["4":"a", "5":"v", "6":"c"]

          //增加和更新元素

           dict0["4"] = "r"  //如何key 存在就是一个更新操作,如果不存在就是一个增加操作

           print(dict0)

          //移除元素

          dict0.removeAtIndex(dict0.indexForKey("4")!)

          dict0.removeValueForKey("1")

          print(dict0)

          //遍历

          for item in dict0{

          print(item)

           }

          for(index,value)in dict0.enumerate(){

          print("index = \(index),value = \(value)")

          }

          //合并两个字典

          for item in dict0.keys{

          dict1[item] = dict0[item]

          }

    2.5 可选类型

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

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

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

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

           错误类型error  :unexpectedly found nil while unwrapping an Optional value   说明对nil 强制解包

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

    2.6 枚举

       swift 一个枚举成员不局限于关联整形数据,也没有默认值

       如果枚举关联的是一个整形数据的话,后面的枚举值会根据前面进行累加

       如果枚举关联的是一个非整形数据,必须给出所有的枚举关联值 

       如果一个枚举类型已经指定的话,下次赋值的时候可以通过(.)进行赋值,省略前面的

       获取枚举成员关联的默认值 .rawValue

         enum Month:String {

          //两种赋值方式

          //case January,February,Match

          case January = "一月"

         case February = "二月"

         case Match = "三月"

         }

         var month = Month.January

          print("month1 = \(month.rawValue)")

          month = .Match

          print("month1 = \(month.hashValue)")

    2.7 控制流

        1.if后面的小括号可以省略,大括号不能省略

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

        let a = 10

        if(a > 0){

        print("a > 0") 

        }

        2.可选类型的判断 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()

    2.8 switch

         //switch

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

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

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

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

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

        let a = 10

        switch a

        {

        case 2:

        print("a = 2")

        case 3 :

        print("a = 3")

        case 10:

        print("a = 10")

        print("a = 10")

        default :

        print("a = nil")

        }

        //switch不再像OC一样只局限于整形、浮点型、字符串等

        let score = "优"

        switch score

        {  

        case "优":

        print("a = 2")

        case "良":

        print("a = 3") 

        case "差": 

        print("a = 10")

        default :

        print("a = o")

         }

    2.9  循环

            //写法一

            //for()在swift2.2后面就废弃了

           for var i = 0;i < 10;i++

           {

            print(i)

            }

           //写法二(闭区间)

          for i in 0...10 {

           print(i)  

          }

           //[0,10)开区间

           for i in 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/qbnedttx.html