samsung puedo movistar internet desconecta compartir como ios swift core-data watchkit watchconnectivity

ios - puedo - Cómo compartir datos usando Watch Connectivity cuando se trabaja con Core Data



compartir internet iphone se desconecta (3)

En mi aplicación iOS, uso Core Data para almacenar datos y una solicitud de recuperación para crear una matriz de NSManagedObject para mostrar en una UITableView .

En Watch OS WCSession si WCSession es compatible y activo una sesión, luego envío a la aplicación iOS un mensaje de la extensión de watchOS.

Cuando la aplicación iOS recibe el mensaje de watchOS, debe enviar la matriz de Objects a la extensión watchOS para mostrar los datos en la WKInterfaceTable , pero no estoy seguro de cómo hacerlo. En definitiva, lo que intento lograr es;

  • ¿Cómo compartir la matriz de Objects con la extensión watchOS?

  • Si el usuario agrega / edita / elimina objetos en la matriz en el reloj, ¿cómo podemos actualizar los datos en el iPhone?

  • Además, la aplicación iOS está incrustada dentro de un UITabBarController entonces, ¿qué importancia tiene con qué controlador de visualización me comunico?

Ver OS FavouritesInterfaceController

var session : WCSession! override func willActivate() { // This method is called when watch view controller is about to be visible to user super.willActivate() //Check if session is supported and Activate if (WCSession.isSupported()) { session = WCSession.defaultSession() session.delegate = self session.activateSession() } } override func awakeWithContext(context: AnyObject?) { super.awakeWithContext(context) // Interface Objects //Send Message sendmessagetoiphone() } func sendMessageToIphone() { if(WCSession.isSupported()){ session.sendMessage(["b":"goodBye"], replyHandler: nil, errorHandler: nil) } }

Aplicación IOS: FavouritesViewController

var objects = [Objects]() func loadData() { let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext let request = NSFetchRequest(entityName: "Objects") request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: true)] do { try self.objects = moc.executeFetchRequest(request) as! [Objects] // success ... } catch { // failure print("Fetch failed") } } func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) { //handle received message let value = message["Value"] as? String dispatch_async(dispatch_get_main_queue()) { self.messageLabel.text = value } //send a reply replyHandler(["Value":"Hello Watch"]) }


Puede usar replyHandler en sendMessage para hacer esto. Asegúrese de implementar el manejador de respuestas tanto en la aplicación Watch como en iOS para obtener esto.

Básicamente, si lo haces bien, tu manejador de respuestas puede garantizar lo que hace tu aplicación iOS en respuesta al mensaje de una aplicación de visualización.

Además, hablando de su respuesta (de enviar una serie de objetos), debe enviarla como un diccionario y buscarla en el reloj.


Primero, esta es una muy buena pregunta. Para empezar, le recomiendo que vea esta sesión de la WWDC 2015: Sesión 713 - Introducción a Watch Connectivity. Esto se puede encontrar aquí.

Ahora a tu pregunta real. Hay un gran tutorial y repo de Github que le muestran cómo comunicar los datos centrales entre su aplicación Apple Watch y la aplicación contenedora utilizando grupos de aplicaciones, ya que esto le permite acceder a todo el contenido compartido, como Core Data e incluso NSUSerdefaults.

A continuación, puede encontrar el tutorial completo sobre cómo hacerlo en el siguiente enlace .

Espero que eso ayude, Julian.


  • ¿Cómo compartir la matriz de objetos con la extensión Watch OS? Como está utilizando WatchConnectivity Framework, envíe la matriz de objetos desde iPhone utilizando el método sendMessage y en su FavoritesInterfaceController implemente la func session(session: WCSession, didReceiveMessage método func session(session: WCSession, didReceiveMessage para obtener la respuesta o puede obtener la matriz en la administración de la respuesta) .

  • Si el usuario agrega / edita / elimina objetos en la matriz en Watch OS, ¿cómo podemos actualizar los datos en el iPhone?

    Envíe el objectId junto con los nuevos cambios en su método sendMessage de reloj a teléfono, al recibir en el teléfono los cambios en su base de datos, guárdelo y envíe el valor actualizado en su replyHandler para que el contenido de su reloj se actualice en consecuencia.

  • Además, la aplicación iOS está incrustada en un UITabBarController, entonces, ¿qué importancia tiene con qué controlador de visualización me comunico?

    Desea viewController al que se está comunicando O el que es responsable de hacer los cambios debe estar vivo. Si múltiples ViewControllers están escuchando WCSessionDelegates , cuando envíe un mensaje de observación, todos los controladores en vivo recibirán ese mensaje. Debe incluir algún tipo de identifier en su diccionario sendMessage para que pueda saber qué operación realizar. Por ejemplo, si desea delete un objeto, cuando watch envíe un mensaje, el identifier contendrá la delete para que al recibirlo pueda verificar el valor del identifier y realizar la operación de delete .