我在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很有经验,实际上解决了我过去几年遇到的每一个问题,但是这个问题似乎是如此基本,而且我无法解决它的问题令人尴尬靠我自己非常感谢帮助
答案 0 :(得分:3)
如果我正确理解您的代码,您就可以保存" a"作为[String]类型的值。但是你试图把它读作[String:String]。而不是
if let vw = userInfo["a"] as? [String: String]
尝试
if let vw = userInfo["a"] as? [String]