2017-04-10 1 views
3

J'ai un problème concernant les données de partage de l'application iPhone à Apple Watch. J'ai essayé ci-dessous le code pour partager NSMutablearray à la montre d'Apple mais son ne fonctionne pas.Comment partager des données entre l'application iPhone et applewatch?

NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:arrStartScore]; 
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.test.StartScore"]; 
[defaults setObject:encodedObject forKey:@"WatchHomeViewTableList"]; 
[defaults synchronize]; 

Pour récupérer des données pour observer les pommes

NSUserDefaults *myDefaults = [[NSUserDefaults alloc]         initWithSuiteName:@"group.com.test.StartScoreCheck"]; 

arrStartScore = [myDefaults objectForKey:@"WatchHomeViewTableList"]; 
NSLog(@"dict....%@",arrStartScore); 
+0

Utilisez AppGroups disposent activer dans la capacité https://gist.github.com/daniellevass/8eef7c022dff30d730df, http://www.techotopia.com/index.php/Sharing_Data_Between_a_WatchKit_App_and_the_Containing_iOS_App – karthikeyan

+0

Salut, mais il se bloque je l'ai fait la même chose que votre lien donné. Je stocke array dans viewdidload sur viewcontroller. Ses accidents. Terminaison de l'application en raison d'une exception non interceptée 'NSInvalidArgumentException', raison: 'Tentative d'insertion d'un objet de liste non-propriété ( – hirentank

Répondre

1

watchOS3 se sont séparés sur UserDefaults montre et téléphone. Les AppGroups peuvent partager des données entre les applications d'un développeur au sein d'un même appareil. Pour transférer des données entre appareils, utilisez le framework WatchConnectivity.

Documentation

5

Pour envoyer des données de téléphone pour regarder, utilisez ce code.

WCSession *session = [WCSession defaultSession]; 
NSError *error; 

[session updateApplicationContext:@{@"message": yourArray} error:&error]; 

Pour recevoir des données à partir du téléphone sur la montre:

- (void) session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,NSMutableArray *> *)applicationContext { 
} 

vous pouvez accéder à votre tableau dans didReceiveApplicationContext en utilisant

[applicationContext objectForKey:@"message"]; 
1

Vous pouvez partager des données en utilisant la connectivité WatchKit Framework. Il y a différentes manières que vous pouvez utiliser pour le fond ou interactif.

Cochez cette case video par apple, elle explique toutes les différentes façons de communiquer entre l'iPhone et la montre.

De plus, vous pouvez créer une classe de connexion de montre singleton et l'utiliser dans iOS et WatchOS. Établissez la session dans l'appareil et intégrez les méthodes de délégué et vous avez terminé. Vous pouvez maintenant envoyer et recevoir des messages d'iOS et de WatchOS.