从ABRecordRef中检索地址

时间:2014-10-10 18:46:28

标签: ios8 abrecordref

我需要获取地址信息,以便计算在我的应用上购买商品的运费和税率。我想使用Apple Pay,因此我收到了ABRecordRef实例的记录。 我试过了

NSString *zip = (__bridge NSString *)(ABRecordCopyValue(address, kABPersonAddressZIPKey));

但它会导致EXC_BAD_ACCESS。我确定应该有办法让它发挥作用,有人知道吗?

2 个答案:

答案 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

我希望它有所帮助。