初次相遇---Swift

 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,612评论 5 471
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,345评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,625评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,022评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,974评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,227评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,688评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,358评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,490评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,402评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,446评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,721评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,802评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,013评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,504评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,080评论 2 341

推荐阅读更多精彩内容