1

UITableView のデータをアルファベット順に並べ替える方法がわかりません。

Icodeblog ( Website ) の ToDoList サンプルを使用しています。データを入力すると、UITableview に表示されます。データは sqlite ファイルにあります。

UITableview バーにボタンを作成して、このコードを実行してテキストをアルファベット順に並べ替えましたが、機能しません:

    NSMutableArray *array = [NSMutableArray array];
    NSArray *sortedArray;
    NSSortDescriptor *lastDescriptor =
    [[NSSortDescriptor alloc] initWithKey:newTodo.text
                                ascending:YES
                                 selector:@selector(localizedCaseInsensitiveCompare:)];
    NSArray *descriptors = [NSArray arrayWithObjects:lastDescriptor, nil];
sortedArray = [array sortedArrayUsingDescriptors:descriptors];
    [self.tableView reloadData];

正しい方向に向けてください。私の友人も「sortUsingSelector」メソッドをチェックするように言った...しかし、私はまだそれを理解できません。

私が使用しているサンプル コードは、こちらにあります

4

3 に答える 3

1

サンプルコードをテストしたところ、これが私が行ったことです。NSSortDescriptorは KVC を使用するため initWithKey、オブジェクトの対応するプロパティになります。あなたのコードは現時点では何もしません。空の配列をソートしようとしています。さらに、テーブル ビューのデータ ソースを変更していません。

- (void)viewWillAppear:(BOOL)animated 
{
    todoAppDelegate *appDelegate = (todoAppDelegate *)[[UIApplication sharedApplication] delegate];
    NSSortDescriptor *lastDescriptor =
    [[NSSortDescriptor alloc] initWithKey:@"text"
                                ascending:YES
                                 selector:@selector(localizedCaseInsensitiveCompare:)];
    NSArray *descriptors = [NSArray arrayWithObjects:lastDescriptor, nil];
    NSMutableArray* sortedArray = [[[appDelegate.todos sortedArrayUsingDescriptors:descriptors] mutableCopy] autorelease];
    appDelegate.todos = sortedArray;

    [self.tableView reloadData];
    [super viewWillAppear:animated];
}
于 2012-06-13T01:13:35.580 に答える
0

あなたはこれらの人がここに置いた答えとうまくやっていくことができますが、簡単にするために、私は次のようなクエリの助けを借りてソートを行います:

 "SELECT * FROM <table-name> ORDER BY <column-name>"

それは私が推測するより簡単な方法かもしれません。

于 2012-06-13T12:59:57.067 に答える
0

を見てみましょう :

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Collections/Articles/Arrays.html#//apple_ref/doc/uid/20000132-SW5

sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

この質問のように:

NSArray をアルファベット順にソートする方法は?

localizedCaseInsensitiveCompareNSStringクラスのメソッドです

于 2012-06-12T22:11:36.103 に答える