1

このコードで連絡先の名前を取得しています:

for( int i = 0 ; i < n ; i++ )
{
    Contact *c = [[Contact alloc] init];

    ABRecordRef ref = CFArrayGetValueAtIndex(all, i);
    NSString *firstName = (NSString *)ABRecordCopyValue(ref, kABPersonFirstNameProperty);
    NSString *lastName = (NSString *)ABRecordCopyValue(ref, kABPersonLastNameProperty);
    c.firstName = firstName; //[NSString stringWithFormat:@"%@ %@", firstName, lastName];
    c.lastName = lastName;

    [contacts addObject:c];

    [c release];
}

このリストをアルファベット順に並べる方法を知っている人はいますか?読んだことsortedArrayUsingSelector:@selector(compare:)がありますが、それがどのように機能するのかわかりません。

4

2 に答える 2

2
NSSortDescriptor *mySorter = [[NSSortDescriptor alloc] initWithKey:@"lastName" ascending:YES];
[contacts sortUsingDescriptors:[NSArray arrayWithObject:mySorter]];
[mySorter release];
于 2011-04-02T22:25:11.953 に答える
1

このメソッドを使用すると、姓または名でソートするためのユーザーの設定を尊重できます。

contacts = (bridgedPeople as [ABRecord]).sort {
    (person1, person2) -> Bool in
    return .CompareLessThan == ABPersonComparePeopleByName(person1, person2, ABPersonGetSortOrdering())
}

プロのヒント:並べ替える名前の部分を太字にします。そうしないと、[名なし、姓なし、名と姓] を持つ連絡先を混在させると混乱します。

于 2016-08-17T07:23:59.937 に答える