2011-09-09 10 views
0

私は初心者ですので、何か明白でないものをお詫びします。データベース内の単純な文字列のキー値を特定できないのはなぜですか(コアデータ)

ローカルスポーツチームの統計情報を生成するために、Xcode 4でアプリを作成しようとしています。

これは私のプログラムの問題領域の関連する詳細です:私は出ていない文字列を持っているデータを使用して実行すると

NSError *error; 

NSArray *games = [context executeFetchRequest:fetchRequest error:&error]; 

if (games == nil) { 
    NSLog(@"There was an error!"); 
} 

int noOfBatOuts = games.count; 
int noOfNotOuts=0; 

for (NSManagedObject *oneMatch in games) { 

    if ([oneMatch valueForKey:@"batOut"][email protected]"NO") { 
      noOfBatOuts = noOfBatOuts - 1; 
      noOfNotOuts = noOfNotOuts + 1; 
      NSLog(@"Not Out!"); 
    } 

    NSLog(@"How out %@",[oneMatch valueForKey:@"batOut"]); 

} 

notOuts.text=[NSString stringWithFormat:@"%d",(noOfNotOuts)]; 

NSLog(@"No of Not Outs is %@",notOuts.text); 

- NO、 - のNSLog(「未アウト!」@)にされ最終的なNSLog(@ "Not of Not Outs ...")はゼロを報告していますが、データがそこにあり、NSLogの中央にあることがわかります(@ "How Out ....")。

私は欲求不満で髪を裂き始め、答えを知る知識はまだありません。誰でも助けてくれますか?

答えて

0

batOutは文字列型ではなくブール値であると仮定します。この場合、文字列の等価性ではなく真理を調べる必要があります。

batOutが実際に文字列の場合、この方法では文字列を比較できません。 isEqual:またはisEqualToString:を使用する必要があります。たとえば:

if ([[oneMatch valueForKey:@"batOut"] isEqual:@"NO"]) { 

通常は、文字列の比較のためにisEqualToString:を使用したいが、-valueForKey:のでisEqual:がより安全であるidです。

==オペレータは、2つのポインタの値が同じであることを確認します。 2つの文字列は同じ内容を持つことができますが、同じメモリには格納できません。

+0

同じコメントRob - 私の未経験が通り抜けて示してくれます。 –

0

==で文字列を比較することはできません。 NSStringのを使用isEqualToString:

+0

ありがとうKevin - 私の未経験があります。 –