我正在撕扯我的头发试图找出我在这里做错了什么。我怀疑这是一件我很想念的事情。
我已经设置了一个应用程序组(我们称之为group.foobar)并将其包含在主应用程序和手表扩展程序的设置中。
在Settings-Watch.bundle的Root.plist中(包含在主应用程序中 - 我认为是正确的),我已将ApplicationGroupContainerIdentifier设置为“group.foobar”。
我有一个用户首选项,标识符设置为“lang”。当我在模拟器中的Apple Watch应用程序中查看时,首选项设置显示正常。
但我似乎无法在我的代码中阅读它。在我的主应用程序中,我打电话给以下人员:
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.foobar"];
NSString *code = [defaults stringForKey:@"lang"];
默认值返回一个指向NSUserDefaults对象的有效指针,但它似乎不是我定义的首选项。 lang没有条目。相反,它包含以下内容:
(lldb) po [defaults dictionaryRepresentation]
{
AppleITunesStoreItemKinds = (
wemix,
podcast,
document,
"software-update",
newsstand,
"tv-episode",
"tv-season",
software,
audiobook,
movie,
song,
album,
tone,
booklet,
ringtone,
artist,
"podcast-episode",
"itunes-u",
mix,
"music-video",
eBook
);
AppleKeyboards = (
"en_US@hw=US;sw=QWERTY",
"emoji@sw=Emoji",
"en_US@hw=US;sw=QWERTY"
);
AppleKeyboardsExpanded = 1;
AppleLanguages = (
en,
fr,
de,
"zh-Hans",
"zh-Hant",
ja,
nl,
it,
es,
"es-MX",
ko,
pt,
"pt-PT",
da,
fi,
nb,
sv,
ru,
pl,
tr,
uk,
ar,
hr,
cs,
el,
he,
ro,
sk,
th,
id,
ms,
"en-GB",
"en-AU",
ca,
hu,
vi,
hi
);
AppleLocale = "en_US";
MSVLoggingMasterSwitchEnabledKey = 0;
NSInterfaceStyle = macintosh;
NSLanguages = (
en,
fr,
de,
"zh-Hans",
"zh-Hant",
ja,
nl,
it,
es,
"es-MX",
ko,
pt,
"pt-PT",
da,
fi,
nb,
sv,
ru,
pl,
tr,
uk,
ar,
hr,
cs,
el,
he,
ro,
sk,
th,
id,
ms,
"en-GB",
"en-AU",
ca,
hu,
vi,
hi
);
}
任何人都知道我做错了什么???
非常感谢提前!!!
答案 0 :(得分:0)
我不确定这是否适合您 - 我刚从设置包中复制了组ID并将其粘贴到套件名称字符串中:
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.foobar"];
我不知道为什么,但虽然它在视觉上是相同的字符串,但它解决了我的问题 - 也许它只是我的解决方案,但你也可以尝试。< / p>
答案 1 :(得分:0)
感谢pi1000。
实际上,我发现了问题的答案。我需要调用方法-registerDefaults以保存默认值,以便我可以读取它们。我不太清楚为什么这是必要的,但似乎是。