2011-07-13 11 views
3

私はiPhone SDKの一部を手に入れて、簡単なアプリケーションを作っています。ここでは、self.label.stringの最初の文字と((UITextField *)sender).textの最後の文字を比較したいと思います。私はそれらをそれぞれself.textyself.inputという名前にしました。文字列を比較するには? ( `==`は間違った値を返す)

私は特定の状況下で私にyesを返すこのif文が私には期待されますが、私はそれを行うようには見えません。

は(私の場合、私の self.label.stringは「こんにちは!」、私の self.inputが「H」で終わっている間に等しかった。)

self.input = [NSString stringWithFormat:@"%@", [((UITextField *)sender).text substringFromIndex:[((UITextField *)sender).text length]-1]]; 
self.texty = [NSString stringWithFormat:@"%@", [self.label.string substringToIndex:1]]; 

if (self.input == self.texty) { 
    return yes; 
} else { 
    return no; 
} 
+0

正しく動作します。 '=='は期待どおりに動作しません。 NSStringの「比較」メソッドの1つを使用します。これはチュートリアルでカバーする必要があります。 –

+0

[Objective-C If statement?]の可能な複製?(http://stackoverflow.com/questions/4987770/objective-c-if-statement) –

答えて

4

文字列の比較は==で行われますが、のいずれかとされていませんcomparison methods of NSString

例えば:

if ([self.input compare:self.texty] == NSOrderedSame) { 
+0

そのようなAahhh ...ありがとう、一束! –

3
if ([self.input isEqualToString:texty]) { 
    return yes; 
} else { 
    return no; 
} 

EDIT:

またはそれ以上のバージョンのコメンターが述べたように:

return [self.input isEqualToString:texty]; 
+1

戻り値[self.input isEqualToString:texty]; –

+0

良い点...私はコードサンプルの文脈に入れていましたが、if文は不要です。 –

1

==演算子はdoesnのなぜあなたは好奇心旺盛であれば期待どおりに動作していないのは、実際には2つのスカラー型(NSStringオブジェクトへのポインタ)を比較しているからです。 NSStringオブジェクト自体。結果的に、2つの比較されたNSStringが内容にかかわらず実際にメモリ内の同じインスタンスでない限り、falseを返します。

+0

私は実際には疑問に思っていました。そのことを明確にしてくれてありがとう! –

+0

@Jan、歓迎です:) –

関連する問題