gpt4 book ai didi

objective-c - ios dev ABMultiValueRemoveValueAndLabelAtIndex 返回 true 但不起作用

转载 作者:行者123 更新时间:2023-11-28 20:35:21 24 4
gpt4 key购买 nike

我想从地址簿联系人中删除特定电话号码。

它“似乎”起作用了,因为它返回真值,但实际上没有。

拜托,有人可以帮我吗?这太棒了!

ABAddressBookRef ab = ABAddressBookCreate();
ABRecordRef record = ABAddressBookGetPersonWithRecordID(ab,[myID intValue]);
NSError *error = NULL;

ABMultiValueRef phoneNumbers = ABRecordCopyValue(record,kABPersonPhoneProperty);

for(CFIndex i=0; i < ABMultiValueGetCount(phoneNumbers); i++){
NSString *phoneNumber = (NSString *)ABMultiValueCopyValueAtIndex(phoneNumbers,i);
//ckDebug(@"phoneNumber = %@", phoneNumber);

if ([[oDict objectForKey:@"value"] isEqualToString:phoneNumber]) {

BOOL didRemove = ABMultiValueRemoveValueAndLabelAtIndex(ABMultiValueCreateMutableCopy(phoneNumbers),i);
ckDebug(@"didRemove = %@\n", (didRemove ? @"TRUE" : @"FALSE"));

//and save it!
BOOL didSave = ABAddressBookSave(ab, (CFErrorRef *) error);

ckDebug(@"didSave = %@\n", (didSave ? @"TRUE" : @"FALSE"));
if (error) {
ckDebug(@"ABAddressBookSaveError = %@", error);
}
}
[phoneNumber release];
}
CFRelease(ab);

最佳答案

所以解决方案是:

创建 MultiValueRef 的 MutableCopy,然后从那里删除值并将副本设置回记录并保存...

像这样:

ABAddressBookRef ab = ABAddressBookCreate();
ABRecordRef record = ABAddressBookGetPersonWithRecordID(ab,[myID intValue]);
NSError *error = NULL;

ABMultiValueRef phoneNumbers = ABRecordCopyValue(record,kABPersonPhoneProperty);
ABMutableMultiValueRef phoneNumberMV = ABMultiValueCreateMutableCopy(phoneNumbers);

for(CFIndex i=0; i < ABMultiValueGetCount(phoneNumberMV); i++){
NSString *phoneNumber = (NSString *)ABMultiValueCopyValueAtIndex(phoneNumberMV,i);
//ckDebug(@"phoneNumber = %@", phoneNumber);

if ([[oDict objectForKey:@"value"] isEqualToString:phoneNumber]) {
//now delete it!!! ;-)
/*
ckDebug(@"phoneNumbers = %@",phoneNumbers);
ckDebug(@"index = %d", i);
*/
BOOL didRemove = ABMultiValueRemoveValueAndLabelAtIndex(phoneNumberMV,i);
ckDebug(@"didRemove = %@\n", (didRemove ? @"TRUE" : @"FALSE"));

BOOL didSet = ABRecordSetValue(record, kABPersonPhoneProperty, phoneNumberMV, nil);
ckDebug(@"didSet = %@\n", (didSet ? @"TRUE" : @"FALSE"));

//and save it!
BOOL didSave = ABAddressBookSave(ab, (CFErrorRef *) error);

ckDebug(@"didSave = %@\n", (didSave ? @"TRUE" : @"FALSE"));
if (error) {
ckDebug(@"ABAddressBookSaveError = %@", error);
}
}
[phoneNumber release];
}
CFRelease(ab);

关于objective-c - ios dev ABMultiValueRemoveValueAndLabelAtIndex 返回 true 但不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10727084/

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