1

我的目的是处理图片库中的一张图片,并将这张图片直接保存到从地址簿中选择的一个人记录(即“汤姆”)中,我可以看到新图片替换了汤姆以前的图片,但我可以不将其保存到地址簿。

我实现了委托 ABPeoplePickerNavigationControllerDelegate,并使用以下逻辑,但无论我尝试什么,修改的记录都无法保存到通讯簿。

任何线索或建议?谢谢

    ABAddressBookRef addressBook= ABAddressBookCreate();
    CFErrorRef error = NULL;
    BOOL wantToSaveChanges = YES;

    ABRecordSetValue(person, kABPersonFirstNameProperty, @"Shi", &error);//, &error)

    NSData * dataRef = UIImagePNGRepresentation(cellImage);
    ABPersonSetImageData(person, dataRef, &error);

    if (ABAddressBookHasUnsavedChanges(addressBook)) {\
        NSLog(@"need to save ");
        if (wantToSaveChanges) {
            ABAddressBookSave(addressBook, &error);
        } else {
            ABAddressBookRevert(addressBook);
        }
    }else {
        NSLog(@"no changes");
    }

    if (error != NULL) {/*... Handle error. ...*/
        NSLog(@"error happened here " );

    }

    CFRelease(addressBook);
4

1 回答 1