2017-07-18 21 views
0

私は、64個のローカル通知の上限に達したかどうかをチェックする機能を作成しようとしています。 UIlocalNotificationsを扱ういくつかの答えがありますが、まだNSlocalNotificationsのものを探しています。クロージャ内で、その後は閉鎖を出た後、偽の初期化された値にリセットしたときにここに私の関数である保留中のローカル通知の件数

 func notificationLimitreached() { 
    let center = UNUserNotificationCenter.current() 
    var limit = false 
    center.getPendingNotificationRequests(completionHandler: { requests in 
     print(requests.count) 
     if requests.count > 59 { 
      limit = true 
      print(limit) 
     } else { 
      limit = false 
     } 

    }) 
    print (limit) 

問題は、真の「リミット」変数のプリントです。

他に何か試しました。

- できるだけ早くあなたが非同期ロジック直面している見ることができるように、私は他にこの値を元の値

答えて

3

にそのセットを読んで再び閉鎖内部のグローバル変数を設定する:

あなたの機能のプリントをgetPendingNotificationRequestsクロージャ内に遅延があるため、最初はfalseです。

この機能を試してみて、それが動作するかどうかを確認:

func isNotificationLimitreached(completed: @escaping (Bool)-> Void = {_ in }) { 
    let center = UNUserNotificationCenter.current() 
    center.getPendingNotificationRequests(completionHandler: { requests in 

     completed(requests.count > 59) 
    }) 
} 

そして、あなたは、次のコードでこの関数を呼び出すことができます。これは、これを行うには正しい方法で、

isNotificationLimitreached { isReached in 
     print(isReached) 
    } 
+0

upVoted –

関連する問題