无法将 NSUserDefaults 与 Apple Watch 同步
Can't sync NSUserDefaults with 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"]);
returns 在日志中 -0.387812 -0.098052
如果你使用模拟器,你可以查看这些数据是否成功持久化。
在我的例子中,路径是:
/Users/benson/Library/Developer/CoreSimulator/Devices/C4557E97-F6E4-48A9-B1C7-04441B3A0214/data/Containers/Shared/AppGroup/991C1FE1-6839-441E-A2F4-66834A683153/Library/Preferences/group.XXXXX.plist
打开group.XXXXX.plist文件,查看这些值是否存在。
在模拟器中,同步 NSUserDefaults 目前并不总是有效。这是一个众所周知的问题。我花了很多时间寻找我的代码中的错误,最后证明我的代码在实际的 Apple Watch 上运行完美。
但是,我不确定是否可以写这么高的频率。你如何确保同步?
您需要实施共享容器,以便在主应用和扩展程序之间进行通信。
查看给定的 link 手表套件教程:-
尝试从设备和手表中完全删除应用,然后重试。
我在使用 Today extension
进行测试时遇到了同样的问题。
同时检查开发者门户,您的应用 ID 是否正确启用了应用组权限,尽管您可能会在 Xcode
上看到
我需要将 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"]);
returns 在日志中 -0.387812 -0.098052
如果你使用模拟器,你可以查看这些数据是否成功持久化。
在我的例子中,路径是:
/Users/benson/Library/Developer/CoreSimulator/Devices/C4557E97-F6E4-48A9-B1C7-04441B3A0214/data/Containers/Shared/AppGroup/991C1FE1-6839-441E-A2F4-66834A683153/Library/Preferences/group.XXXXX.plist
打开group.XXXXX.plist文件,查看这些值是否存在。
在模拟器中,同步 NSUserDefaults 目前并不总是有效。这是一个众所周知的问题。我花了很多时间寻找我的代码中的错误,最后证明我的代码在实际的 Apple Watch 上运行完美。
但是,我不确定是否可以写这么高的频率。你如何确保同步?
您需要实施共享容器,以便在主应用和扩展程序之间进行通信。
查看给定的 link 手表套件教程:-
尝试从设备和手表中完全删除应用,然后重试。
我在使用 Today extension
进行测试时遇到了同样的问题。
同时检查开发者门户,您的应用 ID 是否正确启用了应用组权限,尽管您可能会在 Xcode
上看到