0

iPhone の連絡先リストに似たものを実装したいと考えています。デバイスの連絡先にアクセスできるアドレス帳フレームワークがあることは知っていますが、Core Data データベースに保存されている自分の連絡先を使用したいと考えています。

NSFetchedResultsControllerテーブルビューで連絡先を取得して一覧表示するために使用しています。

ただし、セクションごとに連絡先を表示する方法が見つからないようですNSFetchedResultsController。各セクションは、各連絡先の名前の最初の文字です。お気に入り:

Section A: All contacts that start with the letter A
Section B: All contacts that start with the letter B
etc...

のメソッドのsectionNameKeyPath:パラメーターでこれを行うことができると思いますが、それをどのように使用して目的を達成するのですか?initNSFetchedResultsController

4

1 に答える 1

1

最初にデータをソートし、各セクションの「キー」(A、B、C、D、E) のリストを取得する必要があります。これらをプロパティに NSArray として保存します。

これを実装します:

// Function to load your data
-(void)dataDidLoad
{
// sort the keys
        self.sortedKeysForUsersWithApp = tSortedKeys;
//
        [self.tableView reloadData];
}
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
// add a UILabel
    headerLabel.text = [self.sortedKeysForUsersWithApp objectAtIndex:section];
// set the text to the section title
}

-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
    return [NSArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z", @"#", nil];
}

-(NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
    //return [self.sortedKeys indexOfObject:title];
    return [self.sortedKeysForUsersWithApp indexOfObject:title];
}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    //return self.sortedKeys.count;
    return self.sortedKeysForUsersWithApp.count;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSDictionary *tDictionary = self.sortedUsersWithApp;

    //NSString *key = [self.sortedKeys objectAtIndex:section];
    NSString *key = [self.sortedKeysForUsersWithApp objectAtIndex:section];
    return ((NSArray*)[tDictionary objectForKey:key]).count;
}
于 2012-05-06T16:48:25.353 に答える