gpt4 book ai didi

ios - iOS对组ABRecordRef的CFArrayRef进行排序

转载 作者:行者123 更新时间:2023-12-01 16:34:42 27 4
gpt4 key购买 nike

我需要对包含联系人组的ABRecordRef的CFArrayRef进行排序。

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
CFArrayRef allGroups = ABAddressBookCopyArrayOfAllGroups(addressBook);
CFIndex allGroupsCount = ABAddressBookGetGroupCount(addressBook);

由于ABPersonComparePeopleByName,我知道在对联系人进行排序时很容易做到这一点,但是这些组没有类似的东西。
所以我不知道在这种情况下如何使用CFArraySortValues。

尝试转换为CFMutable数组,然后进行如下排序:
CFMutableArrayRef marray = CFArrayCreateMutableCopy(kCFAllocatorDefault, allGroupsCount, allGroups);
CFArraySortValues(marray, CFRangeMake(0, allGroupsCount), (CFComparatorFunction)CFStringCompare, Null);

但是它当然不起作用,因为它会在接收ABRecordRef时尝试比较字符串

感谢任何帮助

最佳答案

工作方式:

NSArray *convertedAllGroupsArray = (__bridge NSArray*)allGroups;

id sortGroupName = ^(ABRecordRef * obj1, ABRecordRef * obj2){
return [[(NSString *) ABRecordCopyValue(obj1, kABGroupNameProperty) lowercaseString] compare:[(NSString *) ABRecordCopyValue(obj2, kABGroupNameProperty) lowercaseString]];
};

NSArray *allGroupsSorted = [convertedAllGroupsArray sortedArrayUsingComparator:sortGroupName];

从CFArrayRef转换为NSArray的原因是为了避免警告。

关于ios - iOS对组ABRecordRef的CFArrayRef进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289257/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com