访问UNNotificationRequest对象的计划日期

时间:2016-11-21 16:42:12

标签: ios ios10 unusernotificationcenter unnotificationrequest

我试图找到UNNotificationRequest对象的预定开火日期。

我正在提取这样的待处理通知请求:

let date = trigger.value(forKey: "date") as! Date

然后我尝试访问每个UNNotificationRequest对象的开火日期。

我可以按如下方式访问UNNotificationTrigger,但无法找到访问通知的计划开火日期的方法。

DECLARE @sc_trln AS TABLE (doc_ref VARCHAR(50),doc_type VARCHAR(50),item VARCHAR(50),qty DECIMAL(15,4),unit VARCHAR(50)
    ,factor DECIMAL(15,4),unit_cost DECIMAL(15,4),cost_per_unit DECIMAL(15,4),item_tot DECIMAL(15,4),item_name VARCHAR(100))

insert into @sc_trln(doc_ref,doc_type,item,qty,unit,factor,unit_cost,cost_per_unit,item_tot,item_name)
select'SA/000091','SA','006824','-2.000','PCS   ','1.000','0.6446','0.6446','-1.2892','ALALAI ORANGE JAMS 465GM'

SELECT *
FROM
    @sc_trln

我已经能够访问某些通知的日期,如下所示:

function forEachIn(obj, fn) {
    var index = 0;
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            fn(obj[key], key, index++);
        }
    }
}

function extend() {
    var result = {};
    for (var i = 0; i < arguments.length; i++) {
        forEachIn(arguments[i],
            function(obj, key) {
                result[key] = obj;
            });
    }
    return result;
}

这适用于使用UNUserNotificationCenter安排的通知,但在尝试访问iOS 10之前安排的通知日期时出现以下错误。

  

由于未捕获的异常终止应用&#39; NSUnknownKeyException&#39;,原因:&#39; [valueForUndefinedKey:]:此类不是关键日期的键值编码兼容。&#39;

是否有一种方法可以同时支持新旧通知。

谢谢。

1 个答案:

答案 0 :(得分:8)

  

无法找到访问通知的预定开火日期的方法。

您已经表明了解如何获取UNNotificationTrigger。好吧,UNNotificationTrigger是一个抽象的超类。你需要找出真正所属的类,并将其转发给该类。然后你可以探索它的属性。

例如:

  • 如果是UNCalendarNotificationTrigger,则将其强制转换为UNCalendarNotificationTrigger。现在它有一个nextTriggerDate

  • 如果是UNTimeIntervalNotificationTrigger,则将其强制转换为UNTimeIntervalNotificationTrigger。现在它有nextTriggerDate