在Xcode 5.1的最新更新后,苹果提供的用于排序通讯录的示例代码已经失效。URL:https://developer.apple.com/library/ios/documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Chapters/DirectInteraction.html
示例代码:
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFMutableArrayRef peopleMutable = CFArrayCreateMutableCopy(
kCFAllocatorDefault,
CFArrayGetCount(people),
people
);
CFArraySortValues(
peopleMutable,
CFRangeMake(0, CFArrayGetCount(peopleMutable)),
(CFComparatorFunction) ABPersonComparePeopleByName,
(void*) ABPersonGetSortOrdering()
);
CFRelease(addressBook);
CFRelease(people);
CFRelease(peopleMutable);
但是现在,这段代码引发了一个警告
将较小的整数类型 'ABPersonSortOrdering'(也称为 'unsigned int')转换为 'void *'
在这一行中:
(void*) ABPersonGetSortOrdering())
我应该如何修改这段代码?
我实际上已经在苹果论坛、谷歌和stackoverflow上搜索了,但还是没有找到答案。
希望你能帮助我。
更新
看起来使用64位与这个警告有关。这与我的新iPhone 5s的包含一致。
ABAddressBookCreateWithOptions()
而不是ABAddressBookCreate
。在访问地址簿之前,您还应该使用ABAddressBookRequestAccessWithCompletion
检查是否有权限访问。 更多详情请参考这里... https://dev59.com/EGct5IYBdhLWcg3wc9Eg#12510649 - Sammio2ABAddressBookCreateWithOptions
来创建地址簿。 - dequin