0

私が作成しているデータベース アプリがあり、sqlite データベースから結果を抽出してテーブルに配置できますが、セクションでアルファベット順に並べ替える必要があります。

だから今私はこのコードを持っています

AArray = [[NSMutableArray alloc] init];
    BArray = [[NSMutableArray alloc] init];
    CArray = [[NSMutableArray alloc] init];
    DArray = [[NSMutableArray alloc] init];
    EArray = [[NSMutableArray alloc] init];
    FArray = [[NSMutableArray alloc] init];
    GArray = [[NSMutableArray alloc] init];
    HArray = [[NSMutableArray alloc] init];
    IArray = [[NSMutableArray alloc] init];
    JArray = [[NSMutableArray alloc] init];
    KArray = [[NSMutableArray alloc] init];
    LArray = [[NSMutableArray alloc] init];
    MArray = [[NSMutableArray alloc] init];
    NArray = [[NSMutableArray alloc] init];
    OArray = [[NSMutableArray alloc] init];
    PArray = [[NSMutableArray alloc] init];
    QArray = [[NSMutableArray alloc] init];
    RArray = [[NSMutableArray alloc] init];
    SArray = [[NSMutableArray alloc] init];
    TArray = [[NSMutableArray alloc] init];
    UArray = [[NSMutableArray alloc] init];
    VArray = [[NSMutableArray alloc] init];
    WArray = [[NSMutableArray alloc] init];
    XArray = [[NSMutableArray alloc] init];
    YArray = [[NSMutableArray alloc] init];
    ZArray = [[NSMutableArray alloc] init];

データベースから関連する配列に各項目を移動するコードがありますが、これはすべて正常に機能します。

次に、次のコードがあります。

All = [NSMutableDictionary dictionaryWithObjectsAndKeys:AArray,@"A",BArray,@"B",CArray,@"C",DArray,@"D",EArray,@"E",FArray,@"F",GArray,@"G",HArray,@"H",IArray,@"I",JArray,@"J",KArray,@"K",LArray,@"L",MArray,@"M",NArray,@"N",OArray,@"O",PArray,@"P",QArray,@"Q",RArray,@"R",SArray,@"S",TArray,@"T",UArray,@"U",VArray,@"V",WArray,@"W",XArray,@"X",YArray,@"Y",ZArray,@"Z",nil];
    AllArray = [NSArray alloc];
    AllArray = [AllArray initWithArray:[[All allKeys]sortedArrayUsingSelector:@selector(compare:)]];

この

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return [AllArray count];
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    NSArray *Array = [All objectForKey:[AllArray objectAtIndex:section]];
    return [Array count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    int sectionindex = section;
    return [AllArray objectAtIndex:sectionindex]; 

}

実行すると問題なく動作しますが、上下に数回スクロールすると、エラー メッセージが表示されずにアプリがクラッシュします。セクションを追加するとクラッシュするため、セクションと関係がありますが、何が間違っているのかわかりません

hファイルで宣言されたすべてのものと、次の@propertyおよび@synthesize

@property (nonatomic,retain) NSMutableDictionary *All;
@property (nonatomic,retain) NSArray *AllArray;
@property (nonatomic, retain) UITableView *TableView;

誰かが私を助けることができれば、それは本当に素晴らしいことです!

ありがとう!

4

2 に答える 2

1

あなたの辞書「すべて」は保持されていないようです。ディクショナリ オブジェクトをプロパティではなく、インスタンス変数に直接割り当てているようです (この場合、self.All を使用していたはずです)。

アプリがメッセージなしでクラッシュする場合は、Xcode のツールバーで [ブレークポイント] ボタンを有効にしてください。これにより、デバッガーでアプリが実行され、クラッシュに関するより役立つ情報が得られます。NSZombieEnabled を YES に設定することも役に立ちます。

于 2011-07-02T09:09:13.190 に答える
0

ここを見てください:

最も簡単な方法は、並べ替えセレクターを提供することです (詳細についてはリンクを参照してください)。

sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
于 2011-07-02T09:11:50.790 に答える