2012-04-13 5 views
0

私が知りたいのは、顧客の名前をどのように表示するのですか(これはオブジェクトのオブジェクトインスタンスです)それに添付されたID番号を使用してこのすべてが行うID番号がテキストフィールドに入力したものと同じ場合に名前を印刷しようとしています

int number = [nunmber intValue]; 
Customer *customer = [list objectAtIndex:(memberNumber == number)]; 
NSLog(@"member:%@",customer.name); 
NSLog(@"number:%i",number); 

は、それが表に任意の助け
おかげで最初の人の名前を出力している:これは私がこれまで試してみましたが、それが動作していないものです。
私はこれを試してみてくださいOSX

+1

'-objectAtIndex:'にブール式を渡したので動作しません。 '-objectAtIndex:'は、あなたが望む 'name'の' Customer'の番号ではなく、0または1になります。 'memberNumber'はどこから来たのですか?それはオブジェクトのID番号ivarですか?あなたの質問はあまり明確ではありません。 – trudyscousin

答えて

0

あなたは反復する必要があります(高速列挙)リスト上:

for (Customer *c in list) { 
    if ([c memberNumber]==nunmber) { 
    NSLog(@"member %@ with number %@ found",[c name],[c memberNumber]); 
    } 
} 

nunmbermemberNumberが同じタイプであることを条件とします。 ...:(memberNumber==number)のアプローチでは、効果的にテストを実行し、結果的に0または1のブール値を取得するため、インデックス0の最初の要素(memberNumber!= numberの場合)または2番目の要素(memberNumber == numberの場合) 。

+0

と同じです:)もう1つのこと:あなたがあなたの試合を見つけたらfor-loopから離れるべきです。そうしないと、非効率的に繰り返します常に配列全体。個人的には、以下に示すように 'NSPredicate'検索を使用します(検索の配列と目的のサイズに少し依存します) – DocJones

0

のためのXcode 4でプログラミングしています:

Customer *customer = [list objectAtIndex:number]; 

編集

次のように、会員番号に基づいて配列をフィルタリングするNSPredicateのインスタンスを使用することができます。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"memberNumber == %@", [NSNumber numberWithInt:memberNumber]]; 
NSArray *matchingMembers = [members filteredArrayUsingPredicate:predicate]; 

Customer *customer = [matchingMembers lastObject]; 
NSLog(@"%@", customer.name); 
+0

この種の作品。私がしようとしているのは、memberNumberが数字である – GBSingh

関連する問題