Вопрос по objective-c – Кэширование NSUserDefaults Objective C препятствует тому, чтобы другое приложение точно прочитало изменения

2

У меня есть одно приложение, которое устанавливает предпочтения. Он использует эти префы, как и другое приложение. Когда я использую следующий код во втором приложении, он правильно читает настройки один раз.

    NSUserDefaults* settings = [NSUserDefaults standardUserDefaults];
    [settings addSuiteNamed:@"com.WVS.Wrestling-Tools"];
    [settings synchronize]; // this just a shot in the dark.. didn't work

    [self setScoreboardIndex:[settings integerForKey:@"matName"]];

При последующих вызовах того же кода я получаю [settings integerForKey: @ & quot; matName & quot;] всегда значение, которое было прочитано первым.

В первом приложении я использую контроллер общих пользователей по умолчанию для чтения / записи предпочтений. Не уверен, имеет ли это значение для этого вопроса или нет.

Как заставить второе приложение всегда получать самые последние значения?

Ваш Ответ

1   ответ
4

+[NSUserDefaults resetStandardUserDefaults] во второй программе заставить+[NSUserDefaults standardUserDefaults] создать новый экземпляр и перезагрузить значения с диска при следующем его вызове. призвание-synchronize вfirst Программа является правильным подходом, чтобы убедиться, что обновленные значения по умолчанию записаны на диск (я не уверен, как NSUserDefaultsController ведет себя в этом отношении).

Обратите внимание, что вызов+[NSUserDefaults resetStandardUserDefaults] каждый раз, когда вы обращаетесь к standardUserDefaults, это может привести к снижению производительности, если вы будете делать это часто, поскольку это, вероятно, будет означать попадание диска при каждом чтении.

Error: User Rate Limit ExceededresetStandardUserDefaultsError: User Rate Limit Exceeded
Error: User Rate Limit ExceededNSUserDefaultsError: User Rate Limit ExceededCFPreferencesError: User Rate Limit ExceededdefaultsError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Adam
synchronizeError: User Rate Limit ExceededresetStandardUserDefaultsError: User Rate Limit ExceededNSUserDefaultsError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы