如何使用选项制作 switch 语句?
How to make switch statement with optionals?
我正在处理文本字段和 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
这就是你如何用 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
and/or 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
_
: means is a jolly, 意思是我不在乎这里有什么
我正在处理文本字段和 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
这就是你如何用 switch
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
and/or 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_
: means is a jolly, 意思是我不在乎这里有什么