使用NSUserDefaults在iOS和watchOS之间共享数据?

时间:2017-01-11 17:01:22

标签: ios objective-c nsuserdefaults watchkit

我在iOS应用程序中存储NSUserDefault字符串并在WatchOS上检索它们时遇到问题。

我使用以下教程创建App Groups&将NSUserDefaults用于应用群组:http://www.atomicbird.com/blog/sharing-with-app-extensions

最后,在创建似乎没有任何配置错误的应用组之后,然后尝试检索我存储的字符串时,该值仍为null。 (即使我存储的值绝对不是null

这是我的存储代码(在HomeViewController.m中):

NSUserDefaults *myDefaults = [[NSUserDefaults alloc]
initWithSuiteName:@"APP GROUP ID"];
[myDefaults setObject:totalDonatedString forKey:@"donatedForWatch"];

并检索(InterfaceController.m中的willActivate):

NSUserDefaults *myDefaults = [[NSUserDefaults alloc]
initWithSuiteName:@"APP GROUP ID"];
NSString *donatedWatchString = [myDefaults objectForKey:@"donatedForWatch"];
NSLog(@"%@", donatedWatchString);
[_totalDonatedLabelWatch setText:donatedWatchString];

我是iOS dev / Obj的新手,所以请帮忙!

2 个答案:

答案 0 :(得分:0)

通过使用“应用程序组”来共享数据,您的方法很安静。创建一个包含在主应用目标中的头文件。定义一个用于标识您的应用组的宏。例如,声明Constant.h,其中包含以下内容

#ifndef CONSTANT_H
#define CONSTANT_H

#define SHARED_APP_GROUP @"name_of_your_app_group"

#endif

将此文件导入应用程序组的任何位置(在监视应用程序相关文件和主应用程序文件中)。

答案 1 :(得分:0)

对于WatchOS 2及更高版本:https://telliott.io/2015/08/11/how-to-communicate-between-ios-and-watchos2.html

该指南包含Swift和Obj-C的说明

感谢@dan!