5

アドレス帳を姓で並べ替える並べ替え関数があります。名前で並べ替えるようにこのコードを変更する必要があります。このコードのどこを変更する必要がありますか。単純な変更であることはわかっていますが、理解できません。これは、連絡先リストを姓で並べ替えるコードです

ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFMutableArrayRef peopleMutable = CFArrayCreateMutableCopy
                                       (
                                          kCFAllocatorDefault,
                                          CFArrayGetCount(people),
                                          people
                                       );


CFArraySortValues
       (
        peopleMutable,
        CFRangeMake(0, CFArrayGetCount(peopleMutable)),
        (CFComparatorFunction) ABPersonComparePeopleByName,
        (void*) ABPersonGetSortOrdering()
       );
4

4 に答える 4

8

:-kABPersonSortByFirstNameの代わりに 次のput で sort メソッドを実装します。(void*) ABPersonGetSortOrdering()

CFArraySortValues(peopleMutable,
                  CFRangeMake(0, CFArrayGetCount(peopleMutable)),
                  (CFComparatorFunction) ABPersonComparePeopleByName,
                  kABPersonSortByFirstName);

クレジットはこれに行きます

于 2013-08-08T07:07:27.173 に答える
1

これを試して

 ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook);
    addressBookArray = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByLastName);

それがあなたを助けることを願っています。

于 2013-08-08T07:07:16.693 に答える
0

このコードを使用してそれらを並べ替えることができます。同じコードを使用する場合は、Nitin の回答を確認してください:-

        ABRecordRef person = (__bridge ABRecordRef)record;

        NSString *firstName = (__bridge_transfer NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);

        if ( [beginsPredicate evaluateWithObject:firstName] )
        {
            ABRecordID abRecordID = ABRecordGetRecordID(person);

            [self.filteredPeople addObject:[NSNumber numberWithInt:abRecordID]];
        }

それがあなたのために働くことを願っています。

于 2013-08-08T07:18:23.130 に答える
0

これは私のために働いた:

 //Sorting

 ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error);
            ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook);
            NSArray *allPeople = (__bridge NSArray *)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByFirstName);
于 2015-10-08T05:39:06.913 に答える