gpt4 book ai didi

ios - 如何在 iOS 7.1 中对联系人进行排序

转载 作者:可可西里 更新时间:2023-11-01 03:36:32 25 4
gpt4 key购买 nike

上次更新 Xcode 5.1 后,Apple 的地址簿排序示例代码停止运行。网址: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())

我应该如何修改这段代码?

实际上,我查看了 Apples 的论坛,用 Google 搜索过,用 Stackoverflow 搜索过,但仍然没有任何乐趣。

希望你能帮助我。

更新

It seams using 64bit 与此警告有关。它与我的新 iPhone 5s 的包含相吻合。

最佳答案

正如您所说,问题出在新的 64 位架构上。 (void*) 是 32 位指针用于 32 位架构,但 64 位指针用于 64 位架构。函数 ABPersonGetSortOrdering() 返回类型为 ABPersonCompositeNameFormat 的值,在 ABPerson.h 中指定为 uint32_t。所以警告是让你知道一个 64 位指针指向一个 32 位数字。

可以通过将返回值类型转换为 unsigned long 来消除警告。这是完美的,因为它将在 64 位架构上为 64 位,在 32 位架构上为 32 位。

(void *)(unsigned long)ABPersonGetSortOrdering()

希望这对您有所帮助!

关于ios - 如何在 iOS 7.1 中对联系人进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22464765/

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