2015-12-02 2 views
0

готовлю быстрый массив в моем Watch интерфейс и отправить его в IOS App:Swift массив в словаре приводит к NSCFArray

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

Я бы ожидать, и как оч.сл. держать один и тот же массив, как swiftArray в watchApp. Однако, похоже, это тип __NSCFArray: screenshot Итак, что я здесь делаю неправильно?

Я новичок в Swift, однако у меня есть опыт с Objective C, чтобы решить на самом деле все проблемы, с которыми я столкнулся в последние годы, но эта проблема кажется настолько базовой, и мне неловко, что я не могу решить это само по себе. Так что помощь очень ценится

ответ

3

Если я правильно понимаю ваш код, вы сохраняете «a» как значение типа [String]. Но вы пытаетесь прочитать его как [String: String]. Вместо

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

попробовать

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

Как я уже писал, что это неудобно. Большое спасибо за то, что указали мне в правильном направлении, ваш ответ полностью верен и решил, что я не мог найти в часах. – CptLeChuck70

+0

Свежая пара глаз ... – MirekE

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