带有混合类型的swift 4 post user userInfo(string和NSMutableArray)

时间:2017-09-05 21:33:39

标签: ios swift notifications

我今天刚刚开始学习。我试图发布一个包含[String,String]数据和[String,NSMutableArray]数据的通知。我收到一条错误消息:

Cannot convert value of type 'NSMutableDictionary' to expected argument type [AnyHashable : Any]?

我试图找到一个解决方案或类似的代码,但还没有能够理解这个问题。有人能告诉我真正的问题是什么吗?我怀疑是否与混合我的字典值类型有关。如果是这样,如何在swift中完成?

        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

错误指向&#39; dict&#39;后通知行中的变量

谢谢

1 个答案:

答案 0 :(得分:1)

您不能将NSMutableDictionary用作userInfo类型。您也不应该使用它(在Swift中使用NSMutableDictionaryNSMutableArray的原因很少。)请改为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)