2015-07-19 4 views
0

Когда я выхожу из приложения, значения, хранящиеся в NSUserDefaults, не сохраняются. Я сохранил значение, как это:NSUserDefaults не сохраняет после закрытия приложения

[[NSUserDefaults standardUserDefaults] setValue:@"enabled" forKey:@"notifications"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

Как хранить что-то с NSUserDefaults даже после того, как приложение завершает работу?

Это, как я получить значения:

[[NSUserDefaults standardUserDefaults] valueForKey:@"notifications"] 

Первые две строки бегут, потому что я их для запуска при нажатии кнопки. Когда я перехожу к другому виду и обратно к кнопке с кнопкой, он возвращает значение, которое я установил.

Я вижу, что не так. У меня есть этот код в первом представлении и предполагается, что он работает правильно:

NSUserDefaults *Def = [NSUserDefaults standardUserDefaults]; 
NSString *Ver = [Def stringForKey:@"Version"]; 
NSString *CurVer = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleVersionKey]; 
if(Ver == nil || [Ver compare:CurVer] != 0) 
{ 
    if(Ver == nil) 
    { 
     [[NSUserDefaults standardUserDefaults] setValue:@"disabled" forKey:@"notifications"]; 
    } 
} 
+1

где находится ваше значение, которое вы положили в SetValue? Прямо сейчас вы устанавливаете его как строку «enabled». И как вы к этому относитесь? – Umitk

+0

Когда приложение завершает работу и как работает этот код (вы уверены, что он запустился)? – Wain

+0

Что такое распечатка ключа уведомлений nsuserdefaults? –

ответ

2

Вы используете неправильные методы.

valueForKey и setValue:forKey: - методы, относящиеся к Key Value Coding, и не связаны с настройкой постоянных данных в NSUserDefaults.

Вы должны читать ваши ценности с

[[NSUserDefaults standardUserDefaults] objectForKey:@"notifications"]; 

и писать

[[NSUserDefaults standardUserDefaults] setObject:@"enabled" forKey:@"notifications"]; 
+0

Это не сохраняет его после закрытия приложения. – somepers

+0

@somepers Я не включил это в свой ответ, но вам все равно потребуется вызов синхронизации, если вы сразу же убьете приложение после установки нового объекта (т. Е. До того, как настройки по умолчанию будут автоматически синхронизированы). –

+0

Да, я сохранил эти строки, но он все еще не работает. – somepers

Смежные вопросы