我需要将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
答案 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)
您需要实现共享容器,以便在主应用和扩展之间进行通信。
查看手表套件教程的指定链接: -