2017-09-05 1 views
0

Je viens de commencer à apprendre swift aujourd'hui. Je suis en train de publier une notification contenant à la fois des données [String, String] et [String, NSMutableArray]. Je reçois une erreur qui dit:swift 4 post notification userInfo avec des types mixtes (string et NSMutableArray)

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

Ive a essayé de trouver une solution ou un code similaire, mais n'a pas été en mesure de comprendre encore le problème. Quelqu'un peut-il me dire quel est le vrai problème? Je soupçonne que cela a quelque chose à voir avec le mélange de mes types de valeurs de dictionnaire. Si oui, comment cela se fait-il rapidement?

 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 

points d'erreur à la variable 'dict' dans la ligne de notification après

Merci

Répondre

0

Vous ne pouvez pas utiliser NSMutableDictionary comme le type userInfo. Vous ne devriez pas non plus l'utiliser (il y a peu de raisons d'utiliser NSMutableDictionary ou NSMutableArray dans Swift). Dites var dict: [String: Any] = [:] à la place (ou let dict = […]). De même, list doit être de type [String] plutôt que NSMutableArray.

let dict = ["status": "ok", 
      "list": ["this", "is", "a test"]] 
NotificationCenter.default.post(name: Notification.Name("testing"), object: nil, userInfo: dict)