`[NSUserDefaults standardUserDefaults]` возвращает ноль
Я хочу сохранить некоторые пользовательские настройки, но
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
просто возвращается nil
,
iOS-Developper Library говорит, что это должно вернуть существующий общий объект по умолчанию или создать его, если ни один не существует... Что мне не хватает?
Я также использую Appirater, и там все эти вещи, кажется, также не работают...
Этот код вызывается, когда пользователь нажимает кнопку...
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
int index = ([defaults integerForKey:@"BackgroundColorSpecifier"]+ 1)%self.backgroundColors.count;
[defaults setInteger:index forKey:@"BackgroundColorSpecifier"];
[defaults synchronize];
Это вызывается в application: didFinishLaunchingWithOptions:
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
[standardDefaults registerDefaults:@{@"BackgroundColorSpecifier": @0}];
[standardDefaults synchronize];
Когда я отлаживаю этот фрагмент кода, зеленый "индикатор положения" очень странно прыгает...
Понятия не имею, что происходит... Пожалуйста, помогите!
2 ответа
Это гораздо более вероятно, будет проблемой с отладчиком, чем что-либо еще, особенно с вашими другими проблемами. Я видел подобные вещи в своих собственных проектах, но у меня нет надежного способа их устранения, кроме обычных параметров перезапуска / очистки.
NSLogs обычно дает более согласованные результаты, чем отладчик, если у него нет выходных.
NSUserDefaults не сломан. Мы бы уже слышали об этом.
Вы можете использовать эту функцию для входа в систему userDefaults dic
- (void)logCache
{
NSDictionary * dic = [[NSBundle mainBundle] infoDictionary];
NSString *bundleId = [dic objectForKey: @"CFBundleIdentifier"];
NSUserDefaults *appUserDefaults = [[NSUserDefaults alloc] init];
NSDictionary *cacheDic = [appUserDefaults persistentDomainForName: bundleId];
NsLog(@"cacheDic::%@",cacheDic);
}