Ios 为什么会产生警告? ABMutableMultiValueRef*address=(NSString*)ABRecordCopyValue(thisPerson,KabPersonalAddressProperty); for(CFIndex i=0;i

Ios 为什么会产生警告? ABMutableMultiValueRef*address=(NSString*)ABRecordCopyValue(thisPerson,KabPersonalAddressProperty); for(CFIndex i=0;i,ios,addressbook,core-foundation,Ios,Addressbook,Core Foundation,代码正常,但会产生警告。有线索吗 警告:FirstViewController.m:46:警告:从不兼容的指针类型初始化我相信您会收到警告,因为您正在将NSString*值分配给ABMutableMultiValueRef*变量。您应该只将指针变量分配给相同类型的指针。ABMutableMultiValueRef是一个CFTypeRef,所以也许将ABRecordCopyValue的结果转换为CFString而不是NSString将是一个简单的解决方案。这会破坏应用程序。(用CFString替换

代码正常,但会产生警告。有线索吗


警告:FirstViewController.m:46:警告:从不兼容的指针类型初始化

我相信您会收到警告,因为您正在将
NSString*
值分配给
ABMutableMultiValueRef*
变量。您应该只将指针变量分配给相同类型的指针。

ABMutableMultiValueRef
是一个
CFTypeRef
,所以也许将
ABRecordCopyValue
的结果转换为
CFString
而不是
NSString
将是一个简单的解决方案。

这会破坏应用程序。(用CFString替换NSString*)@Cocoa-Dev对不起,这是我最好的猜测。:-)我还没有使用过地址簿的东西(现在)就个人而言,很遗憾。感谢Mark的帮助。:-)我如何修复它?你看到我正在使用它从多值中提取数据我知道,但我如何修复它?有什么建议吗?Xcode告诉我它们不是同一个点。不幸的是,我不确定如何修复它。ABRecordCopyValue返回一个CFTypeRef,这是一个通用指针t下面Mark的答案可能是您需要走的路-您可能需要将其余部分转换为某个CF*类型。可能不是CFString,但可能是以CF开头的其他内容。
ABMutableMultiValueRef *address = (NSString *)ABRecordCopyValue(thisPerson, kABPersonAddressProperty);
for (CFIndex i=0; i < ABMultiValueGetCount(address); i++) {
    CFDictionaryRef dict = ABMultiValueCopyValueAtIndex(address, i);