Pxxx
Pxxx

Reputation: 21

iOS - Can not sort contacts same to Contacts framework order

Im handling a screen which show contacts from contactDictionary with same native device order. I have seen this method in Contacts framework.

/*! The contact comparator for a given sort order. */
+ (NSComparator)comparatorForNameSortOrder:(CNContactSortOrder)sortOrder;

But when I call

NSComparator comparator = [CNContact comparatorForNameSortOrder:CNContactSortOrderUserDefault];
     NSArray<CNContact *> *sortedContacts = [listContacts sortedArrayUsingComparator:comparator];

Its not same to when I fetch all contact with CNContactSortOrderUserDefault

CNContactFetchRequest *fetchRequest = [[CNContactFetchRequest alloc] initWithKeysToFetch:@[
                [CNContactFormatter descriptorForRequiredKeysForStyle:CNContactFormatterStyleFullName],
                CNContactPhoneNumbersKey,
                CNContactOrganizationNameKey,
                CNContactJobTitleKey,
                CNContactBirthdayKey,
                CNContactImageDataKey,
                CNContactThumbnailImageDataKey,
                CNContactImageDataAvailableKey,
                CNContactEmailAddressesKey,
                CNContactPostalAddressesKey,
                CNContactDatesKey,
                CNContactSocialProfilesKey,
                CNContactPhoneticGivenNameKey,
                CNContactPhoneticMiddleNameKey,
                CNContactPhoneticFamilyNameKey,
                CNContactNicknameKey
                ]];
            CNContactSortOrder sortOder = CNContactSortOrderUserDefault;
            fetchRequest.sortOrder = sortOder;
            
            NSError *fetchError = nil;
            [contactStore enumerateContactsWithFetchRequest:fetchRequest error:&fetchError usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop){}];

List contact when fetch all:

!Saz
\Sa
“Sa
#Sa
%Sa
‘Sa
(Sa
)Sa
*Sa
}Sa
{Sa
,Sa
-Sa
A
Sa
.Sa
/Sa
:Sa
Sa
!!Sa
!?Saz
;Sa
?Sa
@Sa
[Sa
\Sa
]Sa
??Saz
]!Sa
![Sa
!!Sa
]?Sa
?[Sa
&?Saz
Sa !
=Sa
123hange

My list after sort by comparatorForNameSortOrder:

-Sa
,Sa
;Sa
:Sa
Sa !
!!Sa
!!Sa
!?Saz
![Sa
!Saz
??Saz
?[Sa
?Sa
.Sa
‘Sa
“Sa
(Sa
)Sa
[Sa
]!Sa
]?Sa
]Sa
{Sa
}Sa
@Sa
*Sa
/Sa
\Sa
\Sa
&?Saz
#Sa
%Sa
=Sa
123hange
A
Sa
Sa

Thanks for watching.

Upvotes: 2

Views: 65

Answers (0)

Related Questions