iosswiftuilocalnotification

Using @available with stored properties


I have an app that uses local notifications and supports iOS 10. I am trying to add iOS 9 support which requires me to use the old location notification API. I am trying to use @available and #available on my iOS 10 code and I can't figure out how to get my center variable to only be for devices running iOS 10.

When I set my target from iOS 10 to 9 I get the error message for this variable:

UNUserNotificationCenter is only available on iOS 10.0 or newer.

It suggests I add @available(iOS 10.0, *) to my entire class which I don't want to do since there is code in this class that will be used for iOS 9. I appreciate any suggestions on how to limit my center property to just iOS 10.

class ViewController: UIViewController, UITextFieldDelegate {
  
  let center = UNUserNotificationCenter.current()
  ...
}

Solution

  • @available could be used around a whole class or one or more functions, but not for properties.

    Regarding your UNUserNotificationCenter usage, current returns a singleton that never changes, so why not just remove the center constant, and just use UNUserNotificationCenter.current() where center is used?