繁体   English   中英

检查NSDictionary中是否存在用于本地通知的值

[英]Checking if a value exists in a NSDictionary for local notifications

因此,即时消息使用本地通知向用户发送每日通知,一旦添加了通知,便在userInfo-NSDictionary中添加一个ID。 用户可以随时删除药物,这将取消通知,这就是为什么我将ID添加到NSDictionary中的原因。

 var notification = new UILocalNotification();
            Random rnd = new Random();
            string stringid = rnd.Next(1, 1000000000).ToString();


            notification.AlertBody = usermedid + "Please take " + dosage + " of " + medname;
            stringid = notification.AlertBody;
            App.BadgeCount = App.BadgeCount + 1;
            notification.ApplicationIconBadgeNumber = App.BadgeCount;
            notification.FireDate = NSDate.FromTimeIntervalSinceNow(60);
            notification.RepeatInterval = NSCalendarUnit.Minute;


            var userInfo = NSDictionary.FromObjectAndKey(new NSString("UsermeddosageID"),new NSString(usermeddosagetimeid));

            notification.UserInfo = userInfo;

            UIApplication.SharedApplication.ScheduleLocalNotification(notification);

该代码将id插入NSDictionary,但是由于某种原因,它不会在我的IF语句中读取它。 谁能解释我的代码为什么不起作用? 任何帮助表示赞赏。

var array = UIApplication.SharedApplication.ScheduledLocalNotifications;



        foreach (var item in array)
        {


            var userinfo = item.UserInfo;
            if (!userinfo.ContainsKey(new NSString(usermeddosagetimeid)))
            {

           UIApplication.SharedApplication.CancelLocalNotification(item);

            }

        }

如果我理解正确,如果您想取消包含密钥usermeddosagetimeid的通知,则if语句应为:

    if (userinfo.ContainsKey(new NSString(usermeddosagetimeid)))
    {

        UIApplication.SharedApplication.CancelLocalNotification(item);

    }

代替!userinfo.ContainsKey(new NSString(usermeddosagetimeid))

BTW, scheduledlocalnotifications是因为iOS的10弃用,你可以使用UNUserNotificationCenter类调度本地通知来代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM