色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>通訊/手機編程>

利用Enum靈活映射多重類型數據模型實例

大小:0.3 MB 人氣:0 2017-09-26 需要積分:1

  一個字段中返回了多種相似的類型

  先來看下項目中我遇到的一個情況,服務端在人物中返回了一組數據。這些人物有幾個相同的屬性,但是又有各自不同的角色各有的屬性。json數據如下:

  “characters” : [

  {

  type: “hero”,

  name: “Jake”,

  power: “Shapeshift”

  },

  {

  type: “hero”,

  name: “Finn”,

  power: “Grass sword”

  },

  {

  type: “princess”,

  name: “Lumpy Space Princess”,

  kingdom: “Lumpy Space”

  },

  {

  type: “civilian”,

  name: “BMO”

  },

  {

  type: “princess”,

  name: “Princess Bubblegum”,

  kingdom: “Candy”

  }

  ]

  那么我們可以怎么解析這樣的數據呢?

  利用類和繼承

  class Character {

  type: String

  name: String

  }

  class Hero : Character {

  power: String

  }

  class Princess : Character {

  kingdom: String

  }

  class Civilian : Character {

  }

  。。.

  struct Model {

  characters: [Character]

  }

  這其實就是項目中我原來使用的方案。但是很快就會覺得有點苦逼,因為使用的時候要不斷的類型判斷,然后類型轉換后才能訪問到某個具體類型的屬性:

  // Type checking

  if model.characters[indexPath.row] is Hero {

  print(model.characters[indexPath.row].name)

  }

  // Type checking and Typecasting

  if let hero = model.characters[indexPath.row] as? Hero {

  print(hero.power)

  }

  利用結構體和協議

  protocol Character {

  var type: String { get set }

  var name: String { get set }

  }

  struct Hero : Character {

  power: String

  }

  struct Princess : Character {

  kingdom: String

  }

  struct Civilian : Character {

  }

  。。.

  struct Model {

  characters: [Character]

  }

  這里我們使用了結構體,解析的性能會好一些。但是看起來和前面類的方案差不多。我們并沒有利用上protocol的特點,使用的時候我們還是要進行類型判斷:

  // Type checking

  if model.characters[indexPath.row] is Hero {

  print(model.characters[indexPath.row].name)

  }

  // Type checking and Typecasting

  if let hero = model.characters[indexPath.row] as? Hero {

  print(hero.power)

  }

  類型轉換的潛在問題

  上面的這種類型轉換可能引入潛在的問題。如果后臺此時增加了一個類型對代碼會產生什么樣的影響呢?可能想到這種情況提前做了處理,也可能沒有處理導致崩潰。

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

用戶評論

      ?
      主站蜘蛛池模板: 儿子好妈妈的HD3中字抢劫 | 久就热视频精品免费99 | 在线观看免费小视频 | 国产偷国产偷亚州清高 | 日韩精品真人荷官无码 | 国产女人视频免费观看 | 精品亚洲国产成AV人片传媒 | 久久亚洲精品AV成人无 | 日本红怡院亚洲红怡院最新 | 亚洲精品婷婷无码成人A片在线 | a级毛片高清免费视频 | 国产毛A片久久久久久无码 国产毛A片啊久久久久久A | 亚洲AV 无码AV 中文字幕 | 小草高清视频免费直播 | 岳打开双腿开始配合日韩视频 | 99精品成人无码A片观看金桔 | 亚州AV人片一区二区三区99久 | 中文字幕人成人乱码亚洲影视 | 午夜DV内射一区二区 | ZZoo兽2皇| 精品夜夜澡人妻无码AV | 久久国产精品福利影集 | 国产精品…在线观看 | 国产精品人妻久久无码不卡 | 色精品极品国产在线视频 | 果冻传媒视频在线播放 | 日本免费一本天堂在线 | 国产欧美国日产在线播放 | 日本粉嫩学生毛绒绒 | 久久橹 | 久久亚洲精品专区蓝色区 | 菠萝菠萝蜜高清观看在线 | 不分昼夜H1V3 | 真人做受120分钟免费看 | 国产精品人成视频免费999 | 蜜桃久久久亚洲精品成人 | 美女扒开腿让男人桶个爽 | 日本zljzljzlj精品 | 怡春院欧美一区二区三区免费 | 黄色a一级视频 | 久久伊人中文字幕有码 |