Чтобы проверить, установлено или нет определенное значение, независимо от его местоположения (глобального или прикладного), проверьте возвращаемое значение -[NSUserDefaults objectForKey:]
id obj = [[NSUserDefaults standardUserDefaults] objectForKey:@"My-Key-Name"];
if (obj != nil) {...}
Чтобы проверить, является ли приложение (комплект)любые настройки хранятся в пользовательских значениях по умолчанию:
NSUserDefaults* sdu = [NSUserDefaults standardUserDefaults];
NSString* bundleId = [[NSBundle mainBundle] bundleIdentifier];
NSDictionary* mainBundleSettings = [sdu persistentDomainForName:bundleId];
NSLog(@"%@", mainBundleSettings);
Если вас интересуют все возможные значения, для которых -[NSUserDefaults objectForKey:]
что-то выдаст, включая глобальные настройки системы, просто позвоните
NSDictionary* allPossibleSettings = [sdu dictionaryRepresentation];
NSUserDefaults
никогда не бывает пустым.Он сочетает в себе глобальные настройки, настройки пакета, временные данные и, возможно, что-то еще.Например, если вы позвоните:
[[NSUserDefaults standardUserDefaults] objectForKey:@"NSBoldSystemFont"]
, вы получите строковое значение @"LucidaGrande-Bold"
, которое будет взято из глобальных настроек, даже если ваше приложение никогда не устанавливало это значение.