-1

これは単純で奇妙な質問です...

if(tableViewNum == @"One") {
        if ([drinkArray objectAtIndex:0] == currentDate) {
            [updatedArray addObject:drinkArray];
            NSLog(@"MADE THE ELSE1");
        }
        NSLog(@"MADE THE ELSE2");
    }
    else if (tableViewNum == @"Two") {
        if ([[drinkArray objectAtIndex:0] isEqualToString:yesterdayDate])
            [updatedArray addObject:drinkArray];
    } else {
        NSLog(@"MADE THE ELSE %@",tableViewNum);
        [updatedArray addObject:drinkArray];
    }

最初のifステートメントで、tableViewNum ==@"One"かどうかを尋ねます

ただし、tableViewNumが実際には@ "One"と等しい場合でも、ifステートメントのそのセクションには入りません。

ご覧のとおり、最後のNSLogはすべての方法で次のようになります。

MADE THE ELSE One

しかし、tableViewNumが実際にOneに等しい場合、elseステートメントコードではなくifステートメントを通過したはずです... ?????

4

2 に答える 2

6

==文字列を演算子と比較することはできません。isEqualToString代わりに使用してください:

if([tableViewNum isEqualToString:@"One"]) {
    // etc.

…そして残りの条件についても同じです。あなたはすでに2番目のブロックでそれを正しくやっています。

于 2012-07-05T16:42:14.897 に答える
0

より具体的に言うと、== を使用してオブジェクトを比較するべきではありません。これはポインタのみを比較します。上記のように [obj isEqual: otherObj] または NSStrings isEqualToString: を使用します。

于 2012-07-05T16:59:31.980 に答える