iPhone ABPeoplePickerNavigationController - 如何从地址簿中选择一个人的两个不同多值属性的两个单个条目

iosiphone

1个回答

写回答

zzzjjjfff

2025-07-09 16:58

+ 关注

iphone
iphone

使用 iphone 的 ABPeoplePickerNavigationController 类可以方便地从地址簿中选择一个人的多个属性。但是,有时候我们可能只需要选择一个人的两个不同的多值属性中的一个或多个单独的条目。本文将介绍如何使用 ABPeoplePickerNavigationController 类从地址簿中选择一个人的两个不同多值属性的两个单个条目,并提供案例代码进行说明。

选择一个人的两个不同多值属性的两个单个条目

在开始之前,我们首先需要在项目中导入 AddressBook.framework 和 AddressBookUI.framework 框架。然后,我们可以使用 ABPeoplePickerNavigationController 类创建一个联系人选择器,并设置代理以处理选择的联系人。

接下来,我们需要在代理方法中处理选择的联系人。在 ABPeoplePickerNavigationControllerDelegate 协议中,有一个方法叫做 peoplePickerNavigationController:didSelectPerson:property:identifier:,该方法会在用户选择联系人的属性时被调用。我们可以在该方法中获取选择的属性,并根据需要进行处理。

下面是一个示例代码,演示了如何从地址簿中选择一个人的两个不同多值属性的两个单个条目:

Swift

import AddressBookUI

class ViewController: UIViewController, ABPeoplePickerNavigationControllerDelegate {

override func viewDidLoad() {

super.viewDidLoad()

let picker = ABPeoplePickerNavigationController()

picker.peoplePickerDelegate = self

self.present(picker, animated: true, completion: nil)

}

// 处理选择的联系人

func peoplePickerNavigationController(_ peoplePicker: ABPeoplePickerNavigationController, didSelectPerson person: ABRecord, property: ABPropertyID, identifier: ABMultiValueIdentifier) {

let propertyName = ABPersonCopyLocalizedPropertyName(property).takeRetAInedValue() as String

let multiValue = ABRecordCopyValue(person, property).takeRetAInedValue() as ABMultiValue

if property == kABPersonPhoneProperty {

// 处理电话号码属性

let phoneNumber = ABMultiValueCopyValueAtIndex(multiValue, identifier).takeRetAInedValue() as! String

print("选择的电话号码为:\(phoneNumber)")

} else if property == kABPersonEmAIlProperty {

// 处理电子邮件属性

let emAIl = ABMultiValueCopyValueAtIndex(multiValue, identifier).takeRetAInedValue() as! String

print("选择的电子邮件为:\(emAIl)")

}

self.dismiss(animated: true, completion: nil)

}

// 其他代理方法...

}

在上面的代码中,我们首先创建了一个 ABPeoplePickerNavigationController 实例,并将其代理设置为当前视图控制器。然后,在选择联系人的属性时,peoplePickerNavigationController:didSelectPerson:property:identifier: 方法会被调用。我们可以根据 property 参数的值来判断选择的是电话号码属性还是电子邮件属性,并通过 ABMultiValueCopyValueAtIndex 函数获取对应的单个条目值。

这样,我们就可以从地址簿中选择一个人的两个不同多值属性的两个单个条目了。

本文介绍了如何使用 iphone 的 ABPeoplePickerNavigationController 类从地址簿中选择一个人的两个不同多值属性的两个单个条目。通过设置代理并处理选择的联系人属性,我们可以轻松地获取所需的数据。希望本文能帮助你在 IOS 开发中处理联系人选择的需求。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号