Swift3 Xcode 8: 'none' is unavailable: use [] to construct an empty option set ; What should I do?

ios, swift, usernotifications

Solution

As the error says, there is no `.none` member to that `OptionSet` type. Just use `[]`, the empty option set.

This should work:

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
    }
}

Even better, use a switch:

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
    }
}

Problem

I was using the `UIUserNotificationType.none` in Swift3 on ViewController.swift, and I got this error: 'none' is unavailable user[] to construct an empty option set ; Here is my code: ``` 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 } } } ```

Original source