*已解决*在分发模式下无法从NSUserDefault获取值

时间:2019-06-05 17:12:32

标签: ios nsuserdefaults objective-c++ ios-app-extension software-distribution

最近,我遇到了NSUserDefaults和App扩展的一个非常奇怪的问题。 我正在使用NSUserDefaults存储一些值(例如:valueA)。通过野生动物园打开我的应用程序时,我需要获得valueA。 当我直接将我的应用程序部署到设备上时,它可以很好地工作。 但是,当我存档我的应​​用程序并导出到基于它的iPA文件或将我的应用程序推送到TestFlight时,通过野生动物园打开我的应用程序时,我再也无法获得valueA。

我想发布时扩展了App extension的App组,但是我不知道发布时的App组是什么?所以我不确定。

更新我的应用程序配置后,我最近刚遇到这个问题。 有人遇到过这个问题吗?任何想法都能赢得我的尊重。

下面是我用来通过NSUserDefaults获取和设置值的代码

#define GROUPID @"group.****"
...
bool NVDataManagerNative::putString(const std::string& key, const std::string& value)
{
    NSUserDefaults *ud = [[NSUserDefaults alloc] initWithSuiteName:GROUPID];
    if(ud == nil){
        ud = [NSUserDefaults standardUserDefaults];
    }
    [ud setObject:convertNSString(value) forKey:convertNSString(key)];
    [ud synchronize];
    return true;
}
...
std::string NVDataManagerNative::getString(const std::string& key, const std::string& def)
{
    NSUserDefaults *ud = [[NSUserDefaults alloc] initWithSuiteName:GROUPID];
    if(ud == nil){
        ud = [NSUserDefaults standardUserDefaults];
    }

    NSString *ret = [ud stringForKey:convertNSString(key)];
    if (nil == ret) {
        return def;
    }

    return [ret UTF8String];
}

0 个答案:

没有答案