Да, это правильный способ проверить optional, возвращает nilли objectForKeyметод has или любое значение, AnyObject?которое есть Implicit optional.
Итак, если userDefaults.objectForKey(kUSERID)есть какое-либо значение, чем оно оценивается true. если userDefaults.objectForKey(kUSERID)имеет nilзначение, чем оценивается false.
Из руководства по быстрому программированию
Операторы if и принудительное разворачивание.
Вы можете использовать оператор if, чтобы узнать, содержит ли необязательный параметр значение. Если необязательный параметр имеет значение, он принимает значение true; если он вообще не имеет значения, он принимает значение false.
Теперь в симуляторах есть ошибка, userDefaultsпоэтому после установки ключа они всегда остаются установленными, независимо от того, удаляете ли вы свое приложение. Вам необходимо сбросить симулятор.
Сбросить Simulator проверить этот метод перед установкой ключа в userDefaultsили вынуть ключ userDefaults.removeObjectForKey(kUSERID)из userDefaults
и он будет возвращать NO.А устройство оно разрешаемая iOS8 beta4.