如何使用optionals创建switch语句?

时间:2016-07-19 22:04:18

标签: ios swift switch-statement optional

我正在处理文本字段和json数据。我想测试json数据是否为!= nil,如果是,那么我用该信息填充它的字段,如果它是== nil然后我在其字段中放置占位符。像这样:

   if memberInfo?.createDate != nil {

    self.activeSinceTextField.text = stringToDateToString((memberInfo?.createDate)!)

  } else {
    placeHolder("Enter Here".localized())
    self.activeSinceTextField.attributedPlaceholder = placeHolderText
  }

  if memberInfo?.birthDate != nil

  {self.birthdayTextField.text = stringToDateToString((memberInfo?.birthDate)!)

  } else

  {     placeHolder("Enter Here".localized())
    self.birthdayTextField.attributedPlaceholder = placeHolderText
  }

我有很多字段,我认为switch语句可以使它更清洁。我只是不确定如何为这种情况制作一个。

1 个答案:

答案 0 :(得分:2)

版本1

这是使用switch

定义4个结果的方法
switch (memberInfo?.createDate, memberInfo?.birthDate) {
case (.Some, .Some): break
case (.Some, nil): break
case (nil, .Some): break
case (nil, nil): break
}

现在只需将break(s)替换为您要为每个方案执行的代码。

第2版

在这里,您可以createDate和/或birthDate展开

switch (memberInfo?.createDate, memberInfo?.birthDate) {
case (let .Some(createDate), let .Some(birthDate)):
    print(createDate, birthDate)
case (let .Some(createDate), .None):
    print(createDate)
case (.None, let .Some(birthDate)):
    print(birthDate)
case (.None, .None):
    print("Both are nils")
}

图例

  • .Some:这里的意思是
  • .None:表示这是nil
  • _:意思是快乐,这意味着我不在乎这里有什么