gpt4 book ai didi

iphone - 如何以编程方式修改通讯录中的联系电话?

转载 作者:行者123 更新时间:2023-11-28 17:42:28 25 4
gpt4 key购买 nike

我目前正在编写一个应用程序,该应用程序应允许用户修改应用程序中的联系方式(主要是号码),然后这些修改应直接反射(reflect)到地址簿中。

我在互联网上彻底搜索,但我找到的所有示例都是加载联系人或添加新联系人,但没有关于修改现有联系人的内容。

另外,如果他存储了多个号码,我如何才能获得一个联系人所有电话号码的列表。

最佳答案

要允许用户直接编辑他们的详细信息,请参阅 Apple's documentation on displaying and editing a person record .开头部分说,“设置代理,它必须采用 ABPersonViewControllerDelegate 协议(protocol)。要允许用户编辑记录,请将 allowsEditing 设置为 YES。”

例如:

ABPersonViewController *personViewController = [[ABPersonViewController alloc] init];
personViewController.personViewDelegate = self;
personViewController.allowsEditing = YES;

除了设置 allowsEditing 之外,代码与显示个人详细信息而无需编辑所需的代码完全相同。 (此代码来自 this answer,其中显示了有关从地址簿中删除联系人的更完整示例。)

但是,我看到您的标题是指以编程方式执行此操作。苹果的Address Book Programing Guide for iOS说,“请记住,地址簿数据库最终归用户所有,因此应用程序必须小心,不要对其进行意外更改。通常,更改应由用户发起或确认。”

但是,这是可能的。以下示例出现在该文档的第 17 页:

ABRecordRef aRecord = ABPersonCreate();
CFErrorRef anError = NULL;
bool didSet;

didSet = ABRecordSetValue(aRecord, kABPersonFirstNameProperty, CFSTR("Katie"), &anError);
if (!didSet) {/* Handle error here. */}

didSet = ABRecordSetValue(aRecord, kABPersonLastNameProperty, CFSTR("Bell"), &anError);
if (!didSet) {/* Handle error here. */}

CFStringRef firstName, lastName;
firstName = ABRecordCopyValue(aRecord, kABPersonFirstNameProperty);
lastName = ABRecordCopyValue(aRecord, kABPersonLastNameProperty);
/* ... Do something with firstName and lastName. ... */

CFRelease(aRecord);
CFRelease(firstName);
CFRelease(lastName);

关于iphone - 如何以编程方式修改通讯录中的联系电话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7577005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com