Swift学习历程06 - 枚举类型 结构体

献给一起学习的小伙伴

  • 做OC开发也快2年了,最近公司要求Swift来开发,组里的小伙伴就叫我整理资料给他们,所以就抽空写了这个,每天写一点,把OC 和**Swift **的不同点都标注出来,方便大家对比,我也小小的回顾一下,希望看的小伙伴们持续关注.
  • 今天大概说下枚举类型、结构体的基本使用,开搞:

1- 结构体

  • 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合

  • 结构体(struct)指的是一种数据结构

  • 结构体是值类型,在方法中传递时是值传递

  • 结构的定义格式

   struct Location {
          var x : Double
          var y : Double
    }
   // 初始化结构体
    struct Location {
       var x : Double
       var y : Double
    }

   // 创建结构体
   let location = Location(x: 90, y: 90)

  • 结构体的增强
  • 默认情况下创建Location时使用Location(x: x值, y: y值)
  • 但是为了让我们在使用结构体时更加的灵活,swift还可以对构造函数进行扩充
  • 扩充的注意点
    • 在扩充的构造函数中必须保证成员变量是有值的
    • 扩充的构造函数会覆盖原有的构造函数
    struct Location {
       var x : Double
       var y : Double

       init(x : Double, y : Double) {
          self.x = x
          self.y = y
       }

        init(xyString : String) {
          let strs = xyString.componentsSeparatedByString(",")
           x = Double(strs.first!)!
           y = Double(strs.last!)!
        }
    }

   let location = Location(x: 100, y: 100)
   let location1 = Location(xyString: "100,100")
  • 为结构体扩充方法
    • 为了让结构体使用更加灵活,swift的结构体中可以扩充方法
    • 例子:为了Location结构体扩充两个方法
    • 向水平方向移动的方法
    • 向垂直方向移动的方法
   struct Location {
       var x : Double
       var y : Double

       init(x : Double, y : Double) {
          self.x = x
          self.y = y
        }

       init(xyString : String) {
           let strs = xyString.componentsSeparatedByString(",")
           x = Double(strs.first!)!
           y = Double(strs.last!)!
        }

       mutating func moveH(x : Double) {
           self.x += x
       }

       mutating func moveV(y : Double) {
           self.y += y
       }
     }

2- 枚举类型

  • 枚举定义了一个通用类型的一组相关的值,使你可以在你的代码中以一个安全的方式来使用这些值。
  • 在 C/OC 语言中枚举指定相关名称为一组整型值
  • Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值.也可以提供一个值是字符串,一个字符,或是一个整型值或浮点值
  • 枚举类型的语法
    • 使用enum关键词并且把它们的整个定义放在一对大括号内
    • case关键词表明新的一行成员值将被定义
    • 不像 C 和 Objective-C 一样,Swift 的枚举成员在被创建时不会被赋予一个默认的整数值
    • 在上面的CompassPoints例子中,North,South,East和West不是隐式的等于0,1,2和3
    • 所以不能像OC一样 用简写
       enum CompassPoint {
            case North
            case South
            case East
            case West
        }

       enum Planet {
          case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
        }

  • 给枚举类型赋值
  • 枚举类型赋值可以是字符串/字符/整型/浮点型
  • 注意如果有给枚举类型赋值,则必须在枚举类型后面明确说明具体的类型
// 1.枚举类型的赋值
   enum CompassPoint : Int {
      case North = 1
      case South = 2
      case East = 3
      case West = 4
   }

   enum Planet {
     case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
   }


// 2.枚举类型的使用
   let p = Planet(rawValue: 3)

   if let p = p {
       switch p {
       case .Mercury:
           print("Mercury")
       case .Venus:
           print("Venus")
       case .Earth:
           print("Mercury")
       case .Mars:
           print("Mars")
       case .Jupiter:
           print("Jupiter")
       case .Saturn:
           print("Saturn")
       case .Uranus:
           print("Uranus")
       case .Neptune:
           print("Neptune")
       }
   }

以前的文章

Swift学习历程01

Swift学习历程02 - 判断语句 循环语句

Swift学习历程03 - 字符串 数组 字典

Swift学习历程04 - 元组 可选类型 类型转化

Swift学习历程05 - 函数 类型转化

今天就先写这些了,还有其他事,还有一些小伙伴私信我,问我的微博 微信 ,我以后就统一在结尾都贴上吧!
博客:http://www.cnblogs.com/hongdongheng
微博:http://weibo.com/u/3041860075
微信:nan46825
希望小伙伴多多留言和点赞,和我交流.

写于 2016年5月18日 晚

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

推荐阅读更多精彩内容