如何在 swift 中的数组中存储未决通知

how to store pending notifications in an array in swift

我正在尝试编写一个函数,其中 returns 正在重复的待处理通知的所有标识符。

func getRepeatingNotificationsIds () -> [String] {
    
    var repatingNotification:[String] = []
    UNUserNotificationCenter.current().getPendingNotificationRequests {
        (requests)  in
        for request in requests{
            if (request.trigger?.repeats == true)
            {
                repatingNotification.append(request.identifier)
            }
            
         }
    }
    
    return repatingNotification
    
}

然而,repatingNotification 数组在返回时仍为空。是否可以通过引用或其他方式调用 repatingNotification?

与其尝试 return 一个值,不如通过向函数发送一个完成块来告诉您的函数您希望它在收集请求后做什么。如评论中所述,由于时间原因,您所拥有的将无法使用。

这里有一个简单的 playground 示例,应该可以让您了解思路。

import UIKit

func getRepeatingNotificationsIds (completion: @escaping ([String])->()) {
    
    var repatingNotification:[String] = []
    UNUserNotificationCenter.current().getPendingNotificationRequests {
        (requests)  in
        for request in requests {
            if (request.trigger?.repeats == true) {
                repatingNotification.append(request.identifier)
            }
         }
        completion(repatingNotification)
    }
}

getRepeatingNotificationsIds { notifications in
    print(notifications)
}