在WatchKit中阅读Settings-Watch.bundle时出现问题

时间:2015-03-28 01:16:01

标签: 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"];

默认值返回一个指向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

    );

}

任何人都知道我做错了什么???

非常感谢提前!!!

2 个答案:

答案 0 :(得分:0)

我不确定这是否适合您 - 我刚从设置包中复制了组ID并将其粘贴到套件名称字符串中:

NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.foobar"];

我不知道为什么,但虽然它在视觉上是相同的字符串,但它解决了我的问题 - 也许它只是我的解决方案,但你也可以尝试。< / p>

答案 1 :(得分:0)

感谢pi1000。

实际上,我发现了问题的答案。我需要调用方法-registerDefaults以保存默认值,以便我可以读取它们。我不太清楚为什么这是必要的,但似乎是。