如何在iPhone应用和Apple Watch之间共享数据?

3

我有一个关于从iPhone应用程序共享数据到Apple Watch的问题。我已经尝试了下面的代码将NSMutablearray共享到Apple Watch,但它没有起作用。

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

获取数据到 Apple Watch

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

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

使用AppGroups功能,在能力中启用它 https://gist.github.com/daniellevass/8eef7c022dff30d730df,http://www.techotopia.com/index.php/Sharing_Data_Between_a_WatchKit_App_and_the_Containing_iOS_App - karthikeyan
你好,但是它崩溃了,我按照你给出的链接做了一样的事情。我在viewdidload中存储数组在viewcontroller中。但是它崩溃了。终止应用程序,因为未捕获的异常'NSInvalidArgumentException',原因是:尝试插入非属性列表对象( - hirentank
3个回答

5

要将数据从手机发送到手表,请使用以下代码。

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

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

从手表上接收手机数据的方法如下:
 - (void) session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,NSMutableArray *> *)applicationContext {   
 }

您可以使用didReceiveApplicationContext访问您的数组

  [applicationContext objectForKey:@"message"];

1

watchOS3将UserDefaults在手表和手机上分开。AppGroups可以在一个设备上的一个开发者应用程序之间共享数据。为了在设备之间传输数据,请使用WatchConnectivity框架。

文档


1
你可以使用WatchKit Connectivity Framework来共享数据。有不同的方式可用于后台或交互式。请查看苹果公司的视频,它解释了iPhone和Watch之间所有不同的通信方式。
此外,您可以创建一个watch connectivity的单例类,并在iOS和WatchOS中使用它。在两个设备上建立会话并集成委托方法即可。现在,您可以在iOS和WatchOS之间发送和接收消息了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接