我需要获取地址信息,以便计算在我的应用上购买商品的运费和税率。我想使用Apple Pay,因此我收到了ABRecordRef实例的记录。 我试过了
NSString *zip = (__bridge NSString *)(ABRecordCopyValue(address, kABPersonAddressZIPKey));
但它会导致EXC_BAD_ACCESS。我确定应该有办法让它发挥作用,有人知道吗?
答案 0 :(得分:1)
终于搞清楚了:
CFTypeRef addressProperty = ABRecordCopyValue((ABRecordRef)address, kABPersonAddressProperty);
NSDictionary *addressDict = (__bridge NSDictionary *)CFArrayGetValueAtIndex((CFArrayRef)ABMultiValueCopyArrayOfAllValues(addressProperty), 0);
结果字典如下所示:
{
City = Hillsborough;
CountryCode = us;
State = CA;
ZIP = 94010;
}
答案 1 :(得分:0)
假设您有联系人的记录标识符,并且您想要检索地址。您的代码将如下所示,
ABRecordRef address[1];
address[0] = ABAddressBookGetPersonWithRecordID(_addressBook, recId);
NSString *zip = (__bridge NSString *)(ABRecordCopyValue(address[0], kABPersonAddressZIPKey));
如果您正在执行此类操作,请在上面的代码中注明,您需要在参数中使用地址[0] 而不是地址才能运行 ABRecordCopyValue 强>
我希望它有所帮助。