2011-02-14 11 views
1

を使用している場合は、Objective-cコードでサーバコールを行っています。 @"yes"として返された場合、アクションが実行されます。なんらかの理由で、// DO ACTION HERE部分に決して届かない。NSStringの等価性のチェックで==

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 
NSString *returnStringResults = returnString; 
NSString *yesText = @"yes"; 

if (returnStringResults == yesText) { 
    testLabel.text = @"Success"; 
    // DO ACTION HERE 
} 

答えて

8
if ([returnStringResults isEqualToString:yesText]) { 
    testLabel.text = @"Success"; 
    // DO ACTION HERE 
} 

編集:bbumが指摘したように、NSString *returnStringResults = returnString;は何もしません。

だから、本当に、その行を削除し、ポインタアドレスを比較している

if ([returnString isEqualToString:yesText]) { 
    testLabel.text = @"Success"; 
    // DO ACTION HERE 
} 
+4

また、NSString * returnStringResults = returnString;は目的を持っていません。 – bbum

+0

また、メソッドコールを行うときは、角カッコが必要です。 (私はそれらを追加しました) –

+0

デイブさん、ありがとうございました。私は "isEqualToString:"の部分にとても集中していました。 –

2

を使用しています。このコードが動作する方法yesTextreturnStringResultsは異なるNSStringインスタンスへのポインタであるため、ポインタは等しくありません。 NSString isEqualToStringメソッドを使用して比較する必要があります。

関連する問題