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
Here is one potential solution (thanks to blog post). The idea is to use a stored property with a type of Any
and then create a computed property that will cast the stored property (and instantiate it if necessary).
private var _selectionFeedbackGenerator: Any? = nil
@available(iOS 10.0, *)
fileprivate var selectionFeedbackGenerator: UISelectionFeedbackGenerator {
if _selectionFeedbackGenerator == nil {
_selectionFeedbackGenerator = UISelectionFeedbackGenerator()
}
return _selectionFeedbackGenerator as! UISelectionFeedbackGenerator
}
Another option is to use lazy
(however, this makes the variable read-write):
@available(iOS 10.0, *)
private(set) lazy var center = UNUserNotificationCenter.current()
@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?