swift 4 发布通知 userInfo 混合类型(字符串和 NSMutableArray)
Posted
技术标签:
【中文标题】swift 4 发布通知 userInfo 混合类型(字符串和 NSMutableArray)【英文标题】:swift 4 post notification userInfo with mixed types (string and NSMutableArray) 【发布时间】:2017-09-05 21:33:39 【问题描述】:我今天刚开始学习 swift。我试图发布一个同时包含 [String, String] 数据和 [String, NSMutableArray] 数据的通知。我收到一条错误消息:
Cannot convert value of type 'NSMutableDictionary' to expected argument type [AnyHashable : Any]?
我试图找到一个解决方案或类似的代码,但还没有能够理解这个问题。有人能告诉我真正的问题是什么吗?我怀疑这与混合我的字典值类型有关。如果是这样,这是如何快速完成的?
var dict = NSMutableDictionary()
dict["status"] = "ok"
var list = NSMutableArray()
list.add("this")
list.add("is")
list.add("a test")
dict["list"] = list
NotificationCenter.default.post(name: Notification.Name("testing"), object: nil, userInfo: dict) <--- error
错误指向发布通知行中的“dict”变量
谢谢
【问题讨论】:
【参考方案1】:您不能将NSMutableDictionary
用作userInfo
类型。你也不应该使用它(在 Swift 中使用 NSMutableDictionary
或 NSMutableArray
的理由很少)。请改用var dict: [String: Any] = [:]
(或let dict = […]
)。同样,list
的类型应为[String]
而不是NSMutableArray
。
let dict = ["status": "ok",
"list": ["this", "is", "a test"]]
NotificationCenter.default.post(name: Notification.Name("testing"), object: nil, userInfo: dict)
【讨论】:
以上是关于swift 4 发布通知 userInfo 混合类型(字符串和 NSMutableArray)的主要内容,如果未能解决你的问题,请参考以下文章
SWIFT - 从 userInfo 获取值以填充推送通知的字段
NotificationCenter 中的推送通知在 userinfo 中返回 nil - Swift3