我正绞尽脑汁想找出我到底做错了什么。我怀疑这是我遗漏的一些简单的东西。
我已经设置了一个应用程序组(让我们称之为group.foobar),并将其包含在主应用程序和手表扩展程序的设置中。
在Settings-Watch.bundle (包含在主应用程序下--我假设这是正确的)中的Root.plist中,我将ApplicationGroupContainerIdentifier设置为"group.foobar“。
我有一个用户首选项,将Identifier设置为"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
);
}有人知道我做错了什么吗?
非常感谢!
发布于 2015-04-03 18:21:15
我不确定这是否也适用于您-我刚刚从设置包中复制了组id,并将其粘贴到Suite name字符串中:
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.foobar"];我不知道为什么,尽管它在视觉上是相同的字符串,但它解决了我的问题-也许这只是我的一个解决方案,但你也可以尝试一下。
发布于 2015-04-04 02:41:12
谢谢,pi1000。
实际上,我找到了我的问题的答案。我需要调用-registerDefaults方法来保存缺省值,以便可以读取它们。我真的不清楚为什么这是必要的,但它似乎是必要的。
https://stackoverflow.com/questions/29312552
复制相似问题