2016-10-10 3 views
0

Mon Iphone envoie un tableau sous la forme d'un message de connectivité de surveillance. Comment imprimer le tableau reçu sur la montre? Je reçois «nul» lorsque j'essaie d'imprimer le tableau. Lorsque j'imprime le tableau de messages de surveillance que j'envoie au téléphone, il renvoie: ["message1": ["nom d'utilisateur": "Utilisateur invité", "titleItem": "Hillary ad Mirrors"]] ,comment imprimer un tableau renvoyé par le message instantané de la connectivité de la montre

mon code sur le téléphone pour envoyer le message est:

func sendMessage() {

var messageDataArray1 = ["username":"Guest User", "titleItem":titleItem!] 

    // Send message 
    if (WCSession.defaultSession().reachable) { 
     print("sending watch message array:") 

     var message1 = ["message1":messageDataArray1] 

     print(message1) 

     WCSession.defaultSession().sendMessage(message1, 
               replyHandler: { (reply) -> Void in 
               dispatch_async(dispatch_get_main_queue(), { 
                print("received return watch msg") 
               }) 
      }, 
               errorHandler: { (error) -> Void in 
               dispatch_async(dispatch_get_main_queue(), { 
                //self.receivedMessageLabel.setText("error") 
               }) 
      } 
     )  
    } 
} 

mon code sur le contrôleur de réception de la montre est:

// MARK: - WCSessionDelegate 
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) { 
    print("received Imessage from ph") 
    if let msg = message["message1"] as? String { 
     print(msg) 
    } 
} 

Répondre

2

message["message1"] vous donnera messageDataArray1 qui est un dictionnaire de type [String:String], mais vous essayez de le jeter comme String qui échouera toujours et retour nil.

Vous devriez jeter comme [String:String]

if let userData = message["message1"] as? [String:String] { 
    let username = userData["username"] 
    print(username) //output: "Guest User" 

    let titleItem = userData["titleItem"] 
    print(titleItem) 
} 
+0

merci Sam_M, qui fonctionne un charme. Puis-je demander comment puis-je obtenir les valeurs dans le tableau «nom d'utilisateur» ou «titleItem»? J'ai essayé var unwrapTitle = message ["titleItem"] comme? [String: [String: String]] print ("title is") impression (unwrapTitle) mais elle renvoie "0" –

+0

@DimitriT De rien :) J'ai mis à jour la réponse pour montrer comment vous pouvez obtenir le nom d'utilisateur et le titleItem . J'ai renommé 'msg' en' userData' pour le rendre plus clair. –

+0

merci beaucoup - bonne aide! –