2011-06-20 3 views
1

私はここで2つの配列を別のクラスから、私は関数で作成した、私の最終目標はアルファベット順にteamRosterをソートすることですが、これは動作するようですが、誰かがより良い方法があるか教えてください?ありがとう。これは、目的のcアレイを1つに等しく設定する最良の方法ですか?

-(IBAction)submitAndSendBack:(id)sender{ 
     CoCoachAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

     NSString *fullName = [ NSString stringWithFormat:@"%@ %@",firstName.text, lastName.text]; 
     [[appDelegate teamRoster] addObject:fullName]; 
     NSArray *temp = [[appDelegate teamRoster] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; 

     [[appDelegate teamRoster] removeAllObjects]; 
     [[appDelegate teamRoster] addObjectsFromArray:temp]; 


     NSLog(@"%@", [appDelegate teamRoster]); 

     [ap 

pDelegate.navigationController popViewControllerAnimated:YES]; 
} 
+0

新しいフルネームを正しい順序で挿入しますか?挿入された新しいフルネームで配列全体を並べ替えるのではなく、配列全体を並べ替えるのではなく、実際に最適化されます。バイナリ検索で位置を決定してから、その位置に挿入します。 –

答えて

1

良い方法がありますか?あなたが「より良い」という意味に依存します。

あなたのコードは理解しやすいほど正確で簡単です。

タイプNSMutableArrayのプロパティがteamRosterをされると仮定すると、あなたは、単に場所に並べ替えることができます:

[[appDelegate teamRoster] sortUsingSelector:@selector(caseInsensitiveCompare:)]; 

をしかし、それをそのようをしない理由があるかもしれない、パフォーマンスや同時実行のために言います。

一方、teamRoster配列がアプリケーションデリゲート以外のコードによって変更されないようにすることができます。この場合、変更不可能なNSArrayとしてのみ使用できるようにする必要があります。それをソートするために上記を使用してください。

0

これを試してください:あなたはteamRosterを変更することができますプロパティを設定していると仮定している

appDelegate.teamRoster = [[temp mutableCopy] autorelease]; 

0

これはいかがですか?

NSArray *temp = [[appDelegate teamRoster] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; 
[appDelegate setTeamRoster:temp]; 

アプリデリゲートがプロパティとして設定teamRosterを持っている場合は、セッターは、あなたがそれを空にし、それを補充することなく、古い配列を置き換えるようになります。

関連する問題