gpt4 book ai didi

ios - ABAddressBookRemoveRecord();偶尔不按预期删除

转载 作者:行者123 更新时间:2023-11-29 12:38:09 25 4
gpt4 key购买 nike

我编写了一个可以访问地址簿的应用程序,用户应该能够从该应用程序中删除联系人,它会从地址簿中删除该联系人>

有时这不会发生,虽然在跟踪时,一切都按预期工作,并且我在删除后立即收到 ABAddressBookRegisterExternalChangeCallback(); 通知,但是当我去联系手机上的应用程序时,联系人总数保持不变,并且该联系人仍然存在,未被删除。

这里是删除的代码

// this method takes and NSManagedObject which holds the id of the person that should be deleted

- (void)deleteContactFromAddressBook:(NSManagedObject *)object
{
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
NSNumber *contactID = [object valueForKey:@"contactID"];
ABRecordRef contactRef = ABAddressBookGetPersonWithRecordID(addressBook, [contactID intValue]);

NSString *firstName = (__bridge NSString *)ABRecordCopyValue(contactRef,
kABPersonFirstNameProperty);
NSString *lastName = (__bridge NSString *)ABRecordCopyValue(contactRef,
kABPersonLastNameProperty);
if (!lastName) {
lastName = @"";
}
NSLog(@"contact to be deleted - Name: %@" ,[firstName stringByAppendingString:lastName]);

BOOL deleteCheck = ABAddressBookRemoveRecord(addressBook, contactRef, NULL);

BOOL saveCheck = ABAddressBookSave(addressBook, NULL);

NSLog(@"delete check = %hhd ---------- save check = %hhd", deleteCheck, saveCheck);
NSLog(@"Contact Deleted with id: %@", contactID);
}

如果您需要进一步的解释,请随时询问。我对这种意想不到的行为感到非常沮丧,我不知道该去哪里找。

谢谢。

最佳答案

我可能是错的,因为到目前为止我只写过 OSX,我确实遇到了类似的问题,但我最终解决了。 (见下面的链接)
我有预感你的 addressBook 对象只是一个本地副本。我发现我必须使用 ABAddressBook *addressBook =[ABAddressBook sharedAddressBook]; 获取 addressBook 并处理其中的记录,就像使用 [addressBook save]; 一样完成您的 iOS 使用情况可能有所不同。( How can I get the values I set for custom properties in AddressBook to persist? )

关于ios - ABAddressBookRemoveRecord();偶尔不按预期删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25713054/

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