读取WatchKit中的设置-Watch.bundle时出现问题
我拼命想弄清楚我到底做错了什么。我怀疑我遗漏了一些简单的东西 我已经建立了一个应用程序组(我们称之为group.foobar),并将其包含在主应用程序和手表扩展的设置中 在Settings-Watch.bundle中的Root.plist(它包含在主应用程序下——我认为这是正确的)中,我已将ApplicationGroupContainerIdentifier设置为“group.foobar” 我有一个用户首选项,标识符设置为“lang”。当我在模拟器的Apple Watch应用程序中查看时,首选项设置显示良好 但我似乎无法在代码中读取它。在我的主应用程序中,我调用以下命令:读取WatchKit中的设置-Watch.bundle时出现问题,watchkit,apple-watch,Watchkit,Apple Watch,我拼命想弄清楚我到底做错了什么。我怀疑我遗漏了一些简单的东西 我已经建立了一个应用程序组(我们称之为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"];
(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
);
}
默认值返回指向NSUserDefaults对象的有效指针,但它似乎不是我定义的首选项。没有lang的条目。相反,它包含以下内容:
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.foobar"];
NSString *code = [defaults stringForKey:@"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
);
}
有人知道我做错了什么吗
非常感谢 我不确定这是否也适用于您-我刚刚从设置包中复制了组id,并将其粘贴到套件名称字符串中:
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.foobar"];
我不知道为什么,虽然它在视觉上是相同的字符串,但它解决了我的问题-也许这只是我的一个解决方案,但你也可以尝试一下。谢谢pi1000
事实上,我找到了问题的答案。我需要调用registerDefaults方法来保存默认值,以便读取它们。我不太清楚为什么这是必需的,但似乎是。您是否在手机和手表应用程序目标>功能>应用程序组中检查了相同的应用程序组?这没有意义,您何时调用registerDefaults:以及您作为参数传递的是什么?