2015-09-26 8 views
5

Sto passando i dati da iOS a WatchKit. Non riesco a ottenere i dati per mostrare che è stato ricevuto sul lato WatchKit in qualche modo però.Dati WatchKit non visualizzati

Questo funziona bene: iOS TableViewController

func getCloudKit() { 
    ///... 
    let publicData = container.publicCloudDatabase 
    publicData.performQuery(query, inZoneWithID: nil) { results, error in 
     if error == nil { // There is no error 
      for play in results! { 
       let newPlay = Play() 
        newPlay.tColor = play["TColor"] as! String 

       do { 
        try WatchSessionManager.sharedManager.updateApplicationContext(["color" : newPlay.tColor]) 
        NSLog("NewPColor: %@", newPlay.tColor) 
       } catch { 
        print(error) 
       } 
       self.objects.append(newPlay) 
      } 
     } else { 
      print(error) 
     } 
    } 
} 

Questo non chiama nessuno dei NSLog s o mostrare qualsiasi dei dati: WatchKit InterfaceController

import WatchConnectivity 


class InterfaceController: WKInterfaceController, WCSessionDelegate { 

    @IBOutlet var colorLabel: WKInterfaceLabel! 

    private let session: WCSession? = WCSession.isSupported() ? WCSession.defaultSession() : nil 

    private func configureWCSession() { 
     session?.delegate = self; 
     session?.activateSession() 
    } 

    override init() { 
     super.init() 
     configureWCSession() 
    } 

    override func awakeWithContext(context: AnyObject?) { 
     super.awakeWithContext(context) 
    } 

    func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) { 
     let colorWatch = applicationContext["color"] as? String 
     NSLog("Check if anything here: %@", colorWatch!) 

       dispatch_async(dispatch_get_main_queue()) { 
        if let colorWatch = colorWatch { 
         self.colorLabel.setText("From iPhone: \(colorWatch)") 
         NSLog("Heres all the strings %@", colorWatch) 
        } else { 
         NSLog("Nothing") 
        } 
       } 
    } 


} 

Tutte le idee? Grazie!

+0

Qual è WatchSessionManager, e lo fa assicuratevi di impostare WCSession e attivarlo? – ccjensen

+0

'WatchSessionManager' è una classe singleton per impostare WCSession e attivarlo. Questo è sul lato iOS, quindi quella parte funziona perfettamente quando registro tutto. Il lato WatchKit è quello che non funziona alla grande. Qualche idea? – SRMR

+0

Forse la sessione in configureWCSession() nil? – ccjensen

risposta

2

Prova a controllare se la sessione è pari a zero con qualcosa di simile (il mio veloce foo è debole):

private func configureWCSession() { 
    print("session: \(session?)) 
    session?.delegate = self; 
    session?.activateSession() 
} 
+0

Ho fatto 'print (" session: \ (session) ")' e mi ha dato 'session: Opzionale ()' quindi penso che tu abbia ragione ? – SRMR

+0

Hmmm ... Prova ad aggiungere la stampa ("sessione ... dopo la chiamata ad activateSession.Che cosa stampa allora? – ccjensen

+1

Sì, funziona dopo la' activateSession() ':" sessione: Opzionale () " – SRMR