【问题标题】:access value for dictionary key in swift快速访问字典键的值
【发布时间】:2019-10-16 07:29:26
【问题描述】:

我在访问 [AnyHashable("aps")] 中的键警报值时遇到问题。我正在尝试将通知警报存储到一个字符串中,以便我可以执行进一步的操作,但我无法访问警报值。你们知道我做错了什么吗?

我是 swift 新手,并试图通过构建自己的应用程序来弄脏自己的手。感谢你们的帮助!

func userNotificationCenter(_ center: UNUserNotificationCenter,
                              willPresent notification: UNNotification,
                              withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    let userInfo = notification.request.content.userInfo

    if let messageID = userInfo[gcmMessageIDKey] {
        print("Message ID: \(messageID)")
    }

    print(userInfo)

    completionHandler([.sound, .alert])
}

实际输出:

[
    AnyHashable("gcm.message_id"): 0:1559231429586204%16146ddd16146ddd,
    AnyHashable("google.c.a.ts"): 1559231429,
    AnyHashable("aps"): {
        alert = "BBQ event on 6/15";
        sound = enabled;
    },
    AnyHashable("gcm.n.e"): 1,
    AnyHashable("google.c.a.udt"): 0,
    AnyHashable("gcm.notification.sound2"): enabled,
    AnyHashable("google.c.a.e"): 1,
    AnyHashable("google.c.a.c_id"): 5464147931275974726
]

预期输出:

"BBQ event on 6/15"

【问题讨论】:

标签: ios swift dictionary


【解决方案1】:

您需要首先获取aps 的值作为Dictionary 类型的[AnyHashable:Any]。然后从apsDict获取alert的值,即

if let apsDict = userInfo["aps"] as? [AnyHashable:Any] {
    if let alert = apsDict["alert"] {
        print("Alert: \(alert)")
    }
}

【讨论】:

  • 谢谢你,这就是我想要做的!它就像一个魅力!
  • 完成。抱歉,我没有一直使用堆栈溢出 :) Happy Coding
猜你喜欢
  • 2023-04-04
  • 2015-10-31
  • 2022-01-22
  • 2011-03-01
  • 1970-01-01
  • 2016-01-20
  • 2016-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多