我正试图从Cocoa中的ABPerson对象获取Country。
我的工作是:
NSString *country = [person valueForProperty:kABAddressCountryKey];
我在控制台中得到了这个:
- [ABPerson valueForProperty:Country] - 未知属性。每个会话每个未知属性仅显示一次此警告。
获取人员的组织名称(kABOrganizationProperty
),firstName(kABFirstNameProperty
)和lastName(kABLastNameProperty
)有效。
有什么想法吗?
答案 0 :(得分:0)
因为密钥kABAddressCountryKey
表示它代表地址的值。由于人可以拥有多个地址(表示为词典),因此您必须循环地址以获取国家/地区:
ABMultiValueRef addressesRef = ABRecordCopyValue(personRef, kABPersonAddressProperty);
for (int i = 0; i < ABMultiValueGetCount(addressesRef); i++)
{
CFDictionaryRef oneAddressRef = ABMultiValueCopyValueAtIndex(addressesRef, i);
NSString *country = CFRetain(CFDictionaryGetValue(oneAddressRef, kABPersonAddressCountryCodeKey));
// Do fancy things with country...
CFRelease(country);
CFRelease(oneAddressRef);
}
CFRelease(addressesRef);
Haven终于测试了它,但它应该这样工作。另请考虑Core Foundation Memory Management。