2015-09-26 17 views
5

Przekazuję dane z iOS do WatchKit. Nie mogę uzyskać danych, aby pokazać, że został odebrany na stronie WatchKit jakoś jednak.Dane WatchKit nie są wyświetlane

Działa to dobrze: 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) 
     } 
    } 
} 

To nie jest wywołanie dowolnego z NSLog s lub pokazywanie któregokolwiek z danymi: 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") 
        } 
       } 
    } 


} 

jakieś pomysły? Dzięki!

+0

Co jest WatchSessionManager, i to upewnij się, aby skonfigurować WCSession i aktywować go? – ccjensen

+0

'WatchSessionManager' jest klasą singleton do konfigurowania WCSession i aktywowania go. Jest to po stronie iOS, więc ta część działa idealnie, gdy loguję wszystko. Strona WatchKit to ta, która nie działa świetnie. Jakieś pomysły? – SRMR

+0

Czy sesja w configureWCSession() nil może? – ccjensen

Odpowiedz

2

Spróbuj sprawdzić, czy sesja jest zerowa z czymś (mój szybki foo jest słaba):

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

Zrobiłem 'print ("sesja: \ (sesja)")' i to dało mi 'sesja: Opcjonalne ()' więc myślę, że jesteś do czegoś prawo ? – SRMR

+0

Hmmm ... Spróbuj dodać wydruk ("sesja ... po wywołaniu, aby aktywować sesję .Jak to się wtedy drukuje? – ccjensen

+1

Tak, działa po" activateSession() ':" sesji: Opcjonalnie ()” – SRMR

Powiązane problemy