繁体   English   中英

swift中字典键的访问值

[英]access value for dictionary key in swift

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

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

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"

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

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

暂无
暂无

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

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