【问题标题】:how to print array returned from watch connectivity instant message如何打印从手表连接即时消息返回的数组
【发布时间】:2016-10-10 12:28:03
【问题描述】:

我的 Iphone 正在发送一个数组作为手表连接消息。如何打印手表上收到的数组?当我尝试打印数组时收到“nil”。

当我在手机上打印要发送的手表消息数组时,它会返回: ["message1": ["username": "Guest User", "titleItem": "Hillary ad Mirrors"]],

我在手机上发送消息的代码是:

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

我在手表接收控制器上的代码是:

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

【问题讨论】:

    标签: arrays swift watchconnectivity


    【解决方案1】:

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

    【讨论】:

    • 谢谢 Sam_M,它很有魅力。请问我怎样才能得到数组'username'或'titleItem'中的值?我试过 var unwrapTitle = message["titleItem"] as? [String:[String:String]] print("title is") print(unwrapTitle) 但它返回 'nil'
    • @DimitriT 不客气:)我更新了答案以显示如何获取用户名和titleItem。我将msg 重命名为userData 以使其更清晰。
    猜你喜欢
    • 2019-04-03
    • 1970-01-01
    • 2020-05-01
    • 2013-03-30
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    相关资源
    最近更新 更多