UITextField - оператор If - PullRequest
0 голосов
/ 03 августа 2011

все еще новичок в iPhone SDK, но мне это до сих пор нравится ...

я просто иду по курсу, обучающему онлайн и немного запутался, я пытаюсь в основном иметь UITextField и кнопку submit(AKA: кнопка GO на клавиатуре)

h file ..

IBOutlet UITextField *InsertUITextFieldBox;  // UITextField to input keystrokes..
IBOutlet UILabel *myLabel;   // UILabel to show if answer is correct or incorrect..

}

-(IBAction)dropMyKeyboard;   // Setup to Say go - and IB - DidEndonExit on my UITextField

my .m file

-(IBAction)dropMyKeyboard{
NSString *TypedinbyUser = [[NSString alloc] initWithFormat:@"%@", [InsertUITextFieldBox text]];  //saves data in uitextfield to a nsstring

NSString *CorrectAnswer = [[NSString alloc] initWithString:@"http://google.com"];  //answer  to used to compare in if statement with uitextfield

                          [myLabel setText:TypedinbyUser]; // show what was typed in my user

//if statement, if what user types is correct to the CorrectAnswer, then display the following if right or wrong....
if (TypedinbyUser == CorrectAnswer) {
    [myLabel setText:@"You Answered Correctly"];
}
[myLabel setText:@"You Answered Incorrectly"];

}

так что да, когда я запускаю это,и набрал "http://google.com" в моем текстовом поле и нажмите GO - моя UILabel переходит к" Вы ответили неправильно ", когда я точно знаю, что я набрал, как я скопировал и вставил его из своего кода, без кавычек, а также набрал вручнуюи попытался добавить пробелы до и после ....

любая помощь была бы полезна в том, что я делаю неправильно .. спасибо

Ответы [ 2 ]

3 голосов
/ 03 августа 2011

Потому что вы сравниваете указатели со строками, а не сами строки. Введенная вами строка будет в другом месте памяти, чем тестовая строка, поэтому у нее будет другой указатель (даже если сами строки будут идентичны).

Попробуйте что-то вроде

if([TypedinbyUser compare:CorrectAnswer]==NSOrderedSame)
{
     // do something positive here....
} else {
     // do something negative...
}
1 голос
/ 03 августа 2011

Чтобы проверить, являются ли две строки одинаковыми или нет, используйте - (BOOL)isEqualToString:(NSString *)aString .

Подробную информацию можно найти здесь: Ссылка на класс NSString

Для вашего случая: if ([TypedinbyUser isEqualToString:CorrectAnswer]) {...}

То, что вы сравниваете, - это если в памяти две строки одинаковы или нет (разумеется, нет), если вы пришли из языка, такого как Java, узнайте, как указательработает.

Еще одно замечание: для имени переменной она должна начинаться со строчной буквы по соглашению.

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