/ / Objective-C ако оценка на оператора - ios, aim-c, if-statement

Целево-C - оценка на изявленията - ios, objective-c, if-statement

Искам да проверя това твърдение:

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

Сривовете на приложението. Въпросът е - проверява ли Objective-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 / НЕ / нула. Следователно && е безсмислено. Можеше да си написал току-що

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

Между другото е по-малко объркващо за себе си и всички останали да проверите дали даден обект е нулев, като го сравните с нула.

(3) Изпращането на метод еEqualToString до обекттова не е NSString ще се срине. Катастрофата ще ви каже какво съобщение сте изпратили до какъв обект. NSCFBoolean е NSNumber с булева стойност, така че се срива.

Трябва или да знаете какво има във вашияречник или го проверете. Ако не сте поставили стойностите в речника сами, не знаете какво има там. Например, ако сте използвали анализатор, за да анализирате JSON документ, текущият ви код ще се срине отново, ако документът JSON съдържа нулева стойност или речник.

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