2016-10-10 6 views
0

My Iphone отправляет массив в виде сообщения о соединении с часами. Как распечатать массив, полученный на часах? Я получаю «ноль», когда пытаюсь напечатать массив.как печатать массив, возвращенный из мгновенного сообщения о подключении часов

Когда я печатаю массив сообщений для просмотра, я посылаю по телефону, он возвращает: ["message1": ["username": "Guest User", "titleItem": "Hillary ad Mirrors"]] ,

Мой код на телефон, чтобы отправить сообщение является:

функ 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") 
               }) 
      } 
     )  
    } 
} 

мой код на часовом принимающем контроллере:

// 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) 
    } 
} 

ответ

2

message["message1"] даст вам messageDataArray1, который является словарем типа [String:String], но вы пытаетесь бросить его как String, который всегда будет терпеть неудачу и вернуть nil.

Вы должны бросить его как [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

спасибо Sam_M, который работает шарм. Могу ли я спросить, как можно получить значения в массиве «имя пользователя» или «titleItem»? Я пробовал var unwrapTitle = message ["titleItem"] как? [String: [String: String]] print ("title is") print (unwrapTitle), но он возвращает 'nil' –

+0

@DimitriT Добро пожаловать :) Я обновил ответ, чтобы показать, как вы можете получить имя пользователя и названиеItem , Я переименовал 'msg' в' userData', чтобы сделать его более понятным. –

+0

большое вам спасибо! –

Смежные вопросы