2013-02-22 4 views
2

Я пишу приложение OS X. Я пытаюсь очистить NSUserDefaults.removePersistentDomainForName не работает для NSUserDefaults

Я сейчас делаю:

[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]]; 

Но это не работает, то есть все пары ключ-значение по-прежнему существует при печати по умолчанию пользователя.

Я также попытался добавить:

[[NSUserDefaults standardUserDefaults] synchronize]; 

еще не везение.

Может ли кто-нибудь помочь? Заранее спасибо!

ответ

5

Кажется, что removePersistentDomainForName: не работает по OS X 10.8. Кроме того, эти вещи не работают также:

[[NSUserDefaults standardUserDefaults] setPersistentDomain:@{} forName:[NSBundle mainBundle].bundleIdentifier]; 

[[NSUserDefaults standardUserDefaults] setValuesForKeysWithDictionary:@{}]; 

Чтобы обойти эту проблему, вы можете установить произвольную пару ключ-значение в области, то удалить пару:

[[NSUserDefaults standardUserDefaults] setPersistentDomain:@{@"": @""} forName:[NSBundle mainBundle].bundleIdentifier]; 
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@""]; 

NSLog(@"%@", [[NSUserDefaults standardUserDefaults] persistentDomainForName:[NSBundle mainBundle].bundleIdentifier]); // => (null) 
+0

я вижу. Большое спасибо! –

+1

Не работает для меня. – RandomGuy

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