无法与Apple Watch同步NSUserDefaults

时间:2015-05-20 07:55:06

标签: ios objective-c nsuserdefaults apple-watch

我需要将2个双打传递给Apple watch,为此我在扩展程序和主应用程序中设置应用程序组,接下来:

主要应用:

groupDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.XXXXX"];
[groupDefaults setDouble:pitchDelta forKey:@"pitch_delta"];
[groupDefaults setDouble:rollDelta forKey:@"roll_delta"];
[groupDefaults synchronize];

延伸:

groupDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.XXXXX"];
double pitchDelta = [groupDefaults doubleForKey:@"pitch_delta"];
double rollDelta = [groupDefaults doubleForKey:@"roll_delta"];

但是价值没有通过。我忘了什么吗?

主应用程序代码中的

[groupDefaults setDouble:pitchDelta forKey:@"pitch_delta"];
[groupDefaults setDouble:rollDelta forKey:@"roll_delta"];
[groupDefaults synchronize];
        NSLog(@"%f %f", [groupDefaults doubleForKey:@"pitch_delta"], [groupDefaults doubleForKey:@"roll_delta"]);

返回日志-0.387812 -0.098052

4 个答案:

答案 0 :(得分:2)

如果您使用模拟器,则可以确定这些数据是否已成功保留。

在我的情况下,路径是:

  

/用户/本森/库/开发商/ CoreSimulator /设备/ C4557E97-F6E4-48A9-B1C7-04441B3A0214 /数据/容器/共享/ AppGroup / 991C1FE1-6839-441E-A2F4-66834A683153 /库/首/组。 XXXXX.plist

打开group.XXXXX.plist文件,查找是否存在这些值。

答案 1 :(得分:2)

在模拟器中,同步NSUserDefaults目前并不总是有效。这是一个众所周知的问题。我花了很长时间在我的代码中搜索错误,结果发现我的代码完全适用于Apple Watch。

但是,我不确定是否可以用如此高的频率写入。你如何确保同步?

答案 2 :(得分:2)

尝试完全从设备&中删除应用程序观看并再试一次。

我使用Today extension测试此问题时遇到了同样的问题。

同时在开发人员门户网站上检查您的应用ID是否已正确启用应用组权限,尽管您可能会在Xcode上看到

答案 3 :(得分:0)

您需要实现共享容器,以便在主应用和扩展之间进行通信。

查看手表套件教程的指定链接: -

https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/WatchKitProgrammingGuide/DesigningaWatchKitApp.html#//apple_ref/doc/uid/TP40014969-CH3-SW4