1

テキストの値を自分に記録し、UITextField後でテキストを元のテキストフィールドの値と比較したいと思います。このようなことを試しましたが、NSLogが表示されません。なぜ何かアイデアはありますか?

defaultTopicText = topicTextField.text;
if ([topicTextField.text isEqualToString:defaultTopicText]){
    NSLog(@"YES");
}else{
    NSLog(topicTextField.text);
    NSLog(defaultTopicText);
}

コードはあなたが見ているのとまったく同じように見えます。最初の行に値を割り当て、他の行を比較します。そして、それは呼ばれていません。

編集:

コード自体が呼び出されており、それらをに入れても同じ値を取得しますNSLog。問題は、テキストフィールドに@"\n"文字が含まれていることでしょうか?

NSLog私にこれを与えます:

2013-03-18 20:45:22.037 myapp[524:907] 

Here comes the text
2013-03-18 20:45:22.039 myapp[524:907] 

Here comes the text
4

3 に答える 3

1

の値を印刷して、topicTextField.text何が表示されるかを確認してください。それ以外の場合は、ブレークポイントを設定して、その特定のコード行に到達しているかどうかを確認します。

また、空白と改行があれば、削除してから比較してみてください。

NSString *trimmmedText = [topicTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

if ([trimmmedText isEqualToString:defaultTopicText]){
    NSLog(@"YES");
}
于 2013-03-18T16:36:38.063 に答える
0

これに変更してみてください:

NSString *newString = [defaultTopicText stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

if ([newString isEqualToString:defaultTopicText]){
    NSLog(@"YES");
}
于 2013-03-18T16:37:23.223 に答える
0

私は答えを理解した次のように入力しました...これを実行するとあなたの答えが得られるはずです:

if(!defaultTopicText){
    NSLog(@"defaultTopicText is nil");
}else{
    NSLog(@"defaultTopicText is a: %@".[defaultTopicText classname]);
}

defaultTopicText = topicTextField.text;
if ([topicTextField.text localizedCaseInsensitiveCompare:defaultTopicText] == NSOrderedSame){
    NSLog(@"YES");
}else{
NSLog(@"\"%@\" != \"%@\"",defaultTopicText, topicTextField.text);
}

それから私は気づきました:topicTextField.textそれがnilである場合、この比較方法を使用してそれ自体と同じオブジェクトになることはできません。

topicTextField.textする必要がありnilます...したがって、実行することになります:

id var = nil;
[var isEqual:nil];

ランタイムはそれを0に戻します。

...だからあなたの出口をに固定しますtopicTextField

于 2013-03-18T16:43:15.420 に答える