在我的 iOS 应用程序中,用户可以通过 ABPeoplePickerNavigationController 从 AddressBookUI 中选择电子邮件。问题是联系人条目的一封电子邮件来自地址簿,而另一封电子邮件来自 Facebook 同步。当用户在 ABPeoplePickerNavigationController 中点击其中一封电子邮件时,将使用相同的参数调用委托方法。我无法收到用户选择的正确电子邮件。在我的例子中,propertyID 等于 4 和标识符 0。
- (BOOL)personViewController:(ABPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifierForValue {
ABMultiValueRef multiValue = ABRecordCopyValue(person, property);
CFIndex index = ABMultiValueGetIndexForIdentifier(multiValue, identifierForValue);
NSString *email = CFBridgingRelease(ABMultiValueCopyValueAtIndex(multiValue, index));
CFRelease(multiValue);
NSLog(@"Email: %@", email );
return NO;
}
每个委托方法中的结果都是相同的。仅当有一个似乎具有相同标识符的 Facebook 电子邮件地址时,我才会遇到此问题。对于具有多个电子邮件的所有其他联系人,委托方法的参数是正确的。如果有人可以帮助我解决这个问题,那就太好了。提前致谢。