/ / Objective-C, якщо оцінка твердження - ios, object-c, if-statement

Objective-C, якщо оцінюється вираз - ios, object-c, if-твердження

Я хочу перевірити це твердження:

 if([optionsDictionary objectForKey:@"showTimes"]
&& [[optionsDictionary objectForKey:@"showTimes"]isEqualToString:@"1"])

Збої програми Питання в тому - чи перевіряє об’єктив-C всі умови? Тому що в C #, якщо 1 умова не вдається, то друга взагалі не перевіряється

Відповіді:

1 для відповіді № 1

Використовуйте [[optionsDictionary objectForKey:@"showTimes"] boolValue] щоб визначити, чи це "0" чи "1".

Змініть свій стан як

if([optionsDictionary objectForKey:@"showTimes"]
&& (1 == [[optionsDictionary objectForKey:@"showTimes"] boolValue]))

0 для відповіді № 2

(1) Якщо заяви та && та || Оператори оцінюються точно так само в Objective-C, як і в C, C ++ або Java.

(2) Якщо ви надішлите будь-яке повідомлення об'єкту, який є нульовим, результат буде 0 / NO / nil. Тому && - безглуздо. Ви могли просто писати

if ([[optionsDictionary objectForKey:@"showTimes"]isEqualToString:@"1"])

До речі, менш заплутано для себе та всіх інших, щоб перевірити, чи є об’єкт нульовим, порівнявши його з нульовим.

(3) Надіслати метод isEqualToString до об'єктаце не NSString вийде з ладу. Збіг підкаже, яке повідомлення ви надіслали якому об’єкту. NSCFBoolean - це NSNumber з булевим значенням, тому він виходить з ладу.

Вам потрібно або знати, що у вас єсловник або перевірити його. Якщо ви самі не вводили значення у словник, ви не знаєте, що там є. Наприклад, якщо ви використовували аналізатор для розбору документа JSON, ваш поточний код знову закінчиться, якщо документ JSON містить нульове значення. Або словник.

Найкраще, тому що це станеться з вами знову і знову, - це написати категорію NSDictionary методом boolValueForKey: яка робить для вас всі перевірки.