Как я могу проверить, существует ли BOOL в пользовательских настройках NSUserDefaults? - PullRequest
10 голосов
/ 02 апреля 2012

Я устанавливаю значение BOOL в NSUserDefaults следующим образом.

[userDefaults setBool:NO forKey:@"theKeyOfMyBOOL"];

В другом месте моего кода я хочу выполнить какое-либо действие, если ключ "theKeyOfMyBOOL" не установлен в NSUserDefaults.Как проверить, был ли установлен этот ключ?Если я сделаю

[userDefaults boolForKey:@"theKeyOfMyBOOL"];

, то возвращаемое значение может быть равно nil, что означает ложное значение, как я полагаю, или фактическому значению BOOL NO, которое равно false.

Однако мне нужноразличать эти два значения (а также ДА, конечно).Как мне надежно это сделать?

1 Ответ

45 голосов
/ 02 апреля 2012

[userDefaults boolForKey:@"theKeyOfMyBOOL"]; возвращает BOOL, поэтому либо YES, либо NO (не nil).

Внутренне оно сохраняется как NSNumber.Поэтому, если вы позвоните

[userDefaults objectForKey:@"theKeyOfMyBOOL"];

, вам будет выдан NSNumber, если вы когда-либо что-либо хранили, или nil, если вы этого не сделали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...