* Решено * Невозможно получить значение из NSUserDefault в режиме распространения - PullRequest
1 голос
/ 05 июня 2019

В последнее время я столкнулся с очень странной проблемой с NSUserDefaults и расширением приложения.Я использую NSUserDefaults для хранения некоторого значения (например: valueA).И мне нужно получить значение A при открытии моего приложения через Safari.Это работает хорошо, когда я развертываю свое приложение непосредственно на устройстве, я могу получить значение A, когда открываю свое приложение через Safari.Но когда я архивирую свое приложение и экспортирую в него базу данных iPA или отправляю свое приложение в TestFlight, когда я открываю свое приложение через safari, я больше не могу получить значение A.

Я полагаю, что группа приложенийрасширение приложения изменяется при распространении, но я не могу знать, что такое группа приложений при распространении?Так что я не уверен в этом.

Я только что столкнулся с этой проблемой недавно после того, как обновил инициализацию своего приложения.Кто-нибудь сталкивался с этой проблемой раньше?Любые идеи заслуживают моего уважения.

Ниже приведен код, который я использую для получения и установки значения с помощью 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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...