2014-12-18 4 views
0

Я изучаю цель-c, когда эта вещь приходит и беспокоит меня.Что произойдет, если результат функции будет ошибочным?

Я попытался создать программу, которая вернет, какой PDF должен отображаться, когда пользователь вводит определенные вещи.

Мой код выглядит следующим образом

filePath = (userChooseA) ? @"firstFilePath" : @"secondFilePath";  

Правым если пользователь выбрать A, путь к файлу будет firstFilePath и наоборот.

Однако, когда я намеренно вводим несуществующий файл для firstFilePath, система будет напрямую показывать secondFilePath независимо от выбора пользователя.

Мой вопрос,

почему это происходит и как это предотвратить?

Спасибо,

С уважением

+0

Что такое тип пользователя UserChooseA? также как вы определили, что userChooseA - это то, что вы думаете, это – Fonix

+0

Вам нужно будет показать больше кода. Единственная строка, которую вы показываете, прекрасна (за исключением того, что вам не нужны скобки), и нет никакой причины, что второй PDF будет показан, если 'userChooseA == YES', так что, вероятно, есть ошибка в другом месте. – Droppy

+0

Другая часть кода очень проста, она просто определяет некоторые переменные и как отображать файл. –

ответ

1

Это потому, что это утверждение эквивалентно:

if(userChooseA) 
{ 
    filePath = @"firstFilePath"; 
}else{ 
    filePath = @"secondFilePath"; 
} 

Я предполагаю, что userChooseA является BOOL установить где-нибудь еще в вашем коде при сравнении пути, и это ложь если пользователь выбирает B или любой другой путь.

Это означает, что если пользователь не выбирает, путь к файлу будет B.

Если вы хотите сделать что-то другое, если ни А или B выбраны, вы могли бы написать (опять же при условии, UserChooseA и userChooseB являются Bool установить где-нибудь еще в вашем коде):

int fileSelection = 3; 
If (userChooseA) fileSelection = 0; 
If (userChooseB) fileSelection = 1; 

switch (fileSelection) { 
    case 0: 
     filePath = @"firstFilePath"; 
     break; 
    case 1: 
     filePath = @"secondFilePath"; 
     break; 
    default: 
     ... do something else... 
     break; 
} 

, если это от основы, как это было предложено в комментариях, мы должны видеть больше коды о том, что userChooseA типа и как он получает набор.

+0

OP, похоже, уже знает об этом и хочет знать, почему используется второй PDF, несмотря на то, что 'userChooseA' является' YES' (это как-то я интерпретировал вопрос). – Droppy

+0

Да, вы правы, я хотел знать, почему используется второй PDF, несмотря на выбор пользователя. –

+0

Итак, каков код для IBAction при нажатии на кнопки A или B? Как инициализируется userChooseA? – jwlaughton

Смежные вопросы