NSUserDefaults boolforKey ограничение по дизайну? - PullRequest
18 голосов
/ 10 декабря 2010

Документация NSUserDefaults API содержит сообщение boolForKey:, которое описывается так:

boolForKey:

Возвращает логическое значение, связанное с указанным ключом.

- (BOOL)boolForKey:(NSString *)defaultName

Возвращаемое значение Если логическое значение связано с defaultName в пользовательских значениях по умолчанию, это значение возвращается. В противном случае, NO возвращается.

Учитывая, что [[NSUserDefaults standardUserDefaults] boolForKey:@"some_Key"] возвращает NO, это может быть либо потому, что ключ не существует, либо ключ существует и имеет значение boolean NO. Как мы можем дифференцироваться? На данный момент я могу только избежать этой ситуации.

Ответы [ 2 ]

32 голосов
/ 10 декабря 2010

Вы используете значения по умолчанию пользователя неправильно. При запуске вашего приложения вы должны вызвать -[NSUserDefaults registerDefaults:] со словарем, который содержит значения по умолчанию для всех предпочтений.

Тогда, если пользователь не установил предпочтение, -boolForKey вернет значение по умолчанию.

29 голосов
/ 10 декабря 2010

Используйте метод -objectForKey:. Это скажет вам, существует ли ключ.

...