字典中的Swift数组导致NSCFArray

时间:2015-12-02 15:59:02

标签: arrays swift dictionary

我在Watch Interface中准备一个swift Array并将其发送到iOS App:

@IBAction func buttonGeklickt() {

if WCSession.isSupported() {
    let session = WCSession.defaultSession()
    session.delegate = self
    session.activateSession()

    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "hh:mm"
    let datumString = dateFormatter.stringFromDate(NSDate())

    var swiftArray = [String]()
    swiftArray.append(datumString)

    var swiftDict = ["a":swiftArray]

    session.transferUserInfo(swiftDict)

}

到目前为止一直很好,在iOS App上字典到了,但是字典中的数组似乎有问题:

func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {

    print ("seems to be the same Dict = \(userInfo)")

    if let vw = userInfo["a"] as? [String: String] {
        print ("Never called! Here I would expect my array from the watch \(vw)")
    }
}

我希望 vw 与watchApp中的 swiftArray 保持相同的数组。但它似乎是__NSCFArray类型: screenshot 那我在这里做错了什么?

我是Swift的新手,不过我对Objective C很有经验,实际上解决了我过去几年遇到的每一个问题,但是这个问题似乎是如此基本,而且我无法解决它的问题令人尴尬靠我自己非常感谢帮助

1 个答案:

答案 0 :(得分:3)

如果我正确理解您的代码,您就可以保存" a"作为[String]类型的值。但是你试图把它读作[String:String]。而不是

if let vw = userInfo["a"] as? [String: String] 

尝试

if let vw = userInfo["a"] as? [String]