作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从地址簿联系人中删除特定电话号码。
它“似乎”起作用了,因为它返回真值,但实际上没有。
拜托,有人可以帮我吗?这太棒了!
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/
我想从地址簿联系人中删除特定电话号码。 它“似乎”起作用了,因为它返回真值,但实际上没有。 拜托,有人可以帮我吗?这太棒了! ABAddressBookRef ab = ABAddressBookCr
我是一名优秀的程序员,十分优秀!