ローカル通知を使用し、iOS 10 をサポートするアプリがあります。iOS 9 のサポートを追加しようとしていますが、古い位置情報通知 API を使用する必要があります。iOS 10 コードで を使用しようとしています@available
が#available
、center 変数を iOS 10 を実行しているデバイス専用にする方法がわかりません。
ターゲットを iOS 10 から 9 に設定すると、この変数に関するエラー メッセージが表示されます。
UNUserNotificationCenter is only available on iOS 10.0 or newer.
クラス全体に追加することを提案しています@available(iOS 10.0, *)
が、このクラスには iOS 9 で使用されるコードがあるため、これは実行したくありません。center プロパティを iOS 10 だけに制限する方法について、ご提案いただければ幸いです。
class ViewController: UIViewController, UITextFieldDelegate {
let center = UNUserNotificationCenter.current()
...
}
ベストアンサー1
Xcode 14 (およびそれ以下) で動作するソリューション
ここに1つの解決策があります(ブログ投稿)。アイデアとしては、 の型の保存プロパティを使用しAny
、保存プロパティをキャストする (必要に応じてインスタンス化する) 計算プロパティを作成することです。
private var _selectionFeedbackGenerator: Any? = nil
@available(iOS 10.0, *)
fileprivate var selectionFeedbackGenerator: UISelectionFeedbackGenerator {
if _selectionFeedbackGenerator == nil {
_selectionFeedbackGenerator = UISelectionFeedbackGenerator()
}
return _selectionFeedbackGenerator as! UISelectionFeedbackGenerator
}