gpt4 book ai didi

iphone - ABPersonViewController 不保存更改

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:56:29 25 4
gpt4 key购买 nike

在我正在编写的应用程序中,我允许用户将联系人与事件相关联。他们可以使用地址簿 UI 框架添加新的或现有的联系人。

联系人一旦关联,就会显示出来,用户可以单击它们以显示ABPersonViewController。 .编辑似乎有效,但当人物 View 关闭时,更改未保存。

相关代码如下:

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

[self.navigationController pushViewController:personController animated:YES];

[personController release];

编辑联系人并关闭人员 View 后,如果我再次单击该联系人,则不会显示任何更改的信息。

我尝试创建一个 ABAddressBookRef属性,并使用

将其分配给 Controller
personController.addressBook = ab;

然后保存了通讯录,还是不行。

编辑:

我已经实现了 <ABPersonViewControllerDelegate> .它只有一种方法,如果我没记错的话,未能实现该方法将导致 ABPersonViewController 根本无法工作。

这是我的完整实现:​​

- (BOOL)personViewController:(ABPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {
return YES;
}

据我所知,这仅意味着 Controller 将正常运行。

编辑 2:

好的,所以我才意识到 Controller 没有显示有关所选人员的任何信息,除了他们的名字。我认为这意味着我的 ABRecordRefs 在某种程度上是不正确的。我会调查的。

我将联系人存储为包含记录 ID 的 NSNumber 数组。这是我的代码(其中 contactIDs 是记录 ID 数组,ab 是 ABAddressBookRef ):

NSMutableArray *contactArray = [NSMutableArray array];
for (NSNumber *contactNumber in contactIDs) {
NSInteger contactID = [contactNumber intValue];
[contactArray addObject:ABAddressBookGetPersonWithRecordID(ab, contactID)];
}

这似乎是可行的,因为当我选择联系人时会加载正确的姓名。但是,没有显示其他信息。

最佳答案

我成功了。问题是我使用了两个不同的 ABAddressBookRefs。

我使用一个 ABAddressBookRef 创建了一个 ABRecordRef 数组(如我编辑的问题中所示),但是当我从数组中读取一个 ABRecordRef 时,我一直在使用的 ABRecordRef 已经被释放。

我让 ABAddressBookRef 的一个实例在我的类实例的整个生命周期中持续存在,并且它起作用了。

关于iphone - ABPersonViewController 不保存更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6529906/

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