Swift3 Xcode 8: 'none' 不可用:使用 [] 构造空选项集;我应该怎么办?
Swift3 Xcode 8: 'none' is unavailable: use [] to construct an empty option set ; What should I do?
我在 ViewController.swift 上使用 Swift3 中的 UIUserNotificationType.none
,我得到了这个错误: 'none' 不可用 user[] 构造一个空的选项集;这是我的代码:
func updateUI() {
let currentSettings = UIApplication.shared.currentUserNotificationSettings
if currentSettings?.types != nil {
if currentSettings!.types == [UIUserNotificationType.badge, UIUserNotificationType.alert] {
textField.isHidden = false
button.isHidden = false
datePicker.isHidden = false
}
else if currentSettings!.types == UIUserNotificationType.badge {
textField.isHidden = true
}
else if currentSettings!.types == UIUserNotificationType.none {
textField.isHidden = true
button.isHidden = true
datePicker.isHidden = true
}
}
}
如错误所述,OptionSet
类型没有 .none
成员。只需使用 []
,空选项集。
这应该有效:
func updateUI() {
guard let types = UIApplication.shared.currentUserNotificationSettings?.types else {
return
}
if types == [.badge, .alert] {
textField.isHidden = false
button.isHidden = false
datePicker.isHidden = false
}
else if types == [.badge] {
textField.isHidden = true
}
else if types.isEmpty {
textField.isHidden = true
button.isHidden = true
datePicker.isHidden = true
}
}
更好的是,使用开关:
func updateUI() {
guard let types = UIApplication.shared.currentUserNotificationSettings?.types else {
return
}
switch types {
case [.badge, .alert]:
textField.isHidden = false
button.isHidden = false
datePicker.isHidden = false
case [.badge]:
textField.isHidden = true
case []:
textField.isHidden = true
button.isHidden = true
datePicker.isHidden = true
default:
fatalError("Handle the default case") //TODO
}
}
因此将 UIUserNotificationType.none
的每个实例替换为 []
我在 ViewController.swift 上使用 Swift3 中的 UIUserNotificationType.none
,我得到了这个错误: 'none' 不可用 user[] 构造一个空的选项集;这是我的代码:
func updateUI() {
let currentSettings = UIApplication.shared.currentUserNotificationSettings
if currentSettings?.types != nil {
if currentSettings!.types == [UIUserNotificationType.badge, UIUserNotificationType.alert] {
textField.isHidden = false
button.isHidden = false
datePicker.isHidden = false
}
else if currentSettings!.types == UIUserNotificationType.badge {
textField.isHidden = true
}
else if currentSettings!.types == UIUserNotificationType.none {
textField.isHidden = true
button.isHidden = true
datePicker.isHidden = true
}
}
}
如错误所述,OptionSet
类型没有 .none
成员。只需使用 []
,空选项集。
这应该有效:
func updateUI() {
guard let types = UIApplication.shared.currentUserNotificationSettings?.types else {
return
}
if types == [.badge, .alert] {
textField.isHidden = false
button.isHidden = false
datePicker.isHidden = false
}
else if types == [.badge] {
textField.isHidden = true
}
else if types.isEmpty {
textField.isHidden = true
button.isHidden = true
datePicker.isHidden = true
}
}
更好的是,使用开关:
func updateUI() {
guard let types = UIApplication.shared.currentUserNotificationSettings?.types else {
return
}
switch types {
case [.badge, .alert]:
textField.isHidden = false
button.isHidden = false
datePicker.isHidden = false
case [.badge]:
textField.isHidden = true
case []:
textField.isHidden = true
button.isHidden = true
datePicker.isHidden = true
default:
fatalError("Handle the default case") //TODO
}
}
因此将 UIUserNotificationType.none
的每个实例替换为 []