来自AppGroup的NSUserDefaults在Watch App中为空

时间:2015-10-14 19:02:26

标签: ios objective-c

我的应用有以下目标:

  • iOS App
  • 今日推广
  • Apple Watch App
  • Apple Watch Extension

所有这些目标都有" App Group"选择正确组的功能。在iOS主应用程序中,我同步设置:

NSUserDefaults * sharedDefaults = [[NSUserDefaults alloc]initWithSuiteName:@"group.foo.bar"];
if([sharedDefaults respondsToSelector:@selector(setObject:forKey:)]){
    // Example Value
    [sharedDefaults setObject:@"TestString" forKey:@"TestString"];
    [sharedDefaults synchronize];
}

今日推广使用以下内容来获取设置,其工作正常:

NSUserDefaults * defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.foo.bar"];
NSLog(@"String: %@", [defaults stringForKey:@"TestString"]);
// String: TestString

手表扩展程序使用相同的代码行来获取今天扩展名的设置,但它不起作用。在控制台中,我看到String: (null)。我做错了什么?

2 个答案:

答案 0 :(得分:0)

您是将Watch目标创建为watchOS WatchKit应用程序(watchOS 2)还是iOS应用程序扩展(watchOS 1)?如果定位到watchOS 2,则根据transition guideYou cannot rely on a shared group container to exchange files with your iOS app. Fetching files involves transferring them wirelessly to Apple Watch.

答案 1 :(得分:0)

请参阅settings bundle not working on watchOS 2显然,对于使用“偏好设置”可以做什么和不能做什么,文档并不清楚,我发现的唯一方法是确保我复制所需的用户默认值并保持手动同步( NSUserDefaults not working on Xcode beta with Watch OS2)。