gpt4 book ai didi

iphone - 如何从地址簿编辑 ABPersonSetImageData

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

我正在开发一个与 AddressBook 联系人一起使用的 iPhone 应用程序。我正在尝试从地址簿中获取图像并进行编辑,然后保存该图像。

但我不知道如何更新和保存该图像。如果有人知道这一点,请给我一个解决方案。

提前致谢。

这是.h文件

ABAddressBookRef addressBook;
IBOutlet UILabel *lblName;
IBOutlet UIImageView *imgGet;
UIImage *imgContact;
NSString* name;

.m 文件

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
name = [(NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty) autorelease];
lblName.text = name;
if(ABPersonHasImageData(person)) {
CFDataRef imageData = ABPersonCopyImageData(person);
imgContact = [UIImage imageWithData:(NSData *)imageData];
imgGet.image = imgContact;
CFRelease(imageData);
} else {
imgGet.image = [UIImage imageNamed:@"ABPicturePerson@2x.png"];
}

[self.navigationController dismissViewControllerAnimated:(YES) completion:nil];

return NO;
}

从上面的方法获取图像和名称后,我打开图库并选择图像,然后单击下面的方法按钮,但图像未保存或更新在地址簿中

-(IBAction)btnSaveClicked {
ABRecordRef person = ABPersonCreate();
NSData *dataRef = UIImagePNGRepresentation(imgGet.image);
CFDataRef cfdata = CFDataCreate(NULL, [dataRef bytes], [dataRef length]);
ABPersonSetImageData(person, (CFDataRef)dataRef, nil);
CFErrorRef error;

ABPersonRemoveImageData(person, &error); // <-- clean any image first from ref
//ABAddressBookSave(addressBook, &error);

ABPersonSetImageData(person, cfdata, &error);

ABAddressBookSave(addressBook, &error);
CFRelease(cfdata);

最佳答案

此链接提示我如何更新您的图片..

http://davidbits.blogspot.in/2010/01/iphone-update-addressbook-contact.html

在.h文件中声明1个对象

NSInteger recordID;

然后打开联系人列表并使用此方法获取联系人

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController     *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
recordID = ABRecordGetRecordID(person);
name = [(NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty) autorelease];
lblName.text = name;
if(ABPersonHasImageData(person)) {
CFDataRef imageData = ABPersonCopyImageData(person);
your uiimage = [UIImage imageWithData:(NSData *)imageData];
you uiimageview.image = your uiimage;
CFRelease(imageData);
} else {
you uiimageview.image = [UIImage imageNamed:@"ABPicturePerson@2x.png"];
}

[self.navigationController dismissViewControllerAnimated:(YES) completion:nil];
//[self.navigationController dismissModalViewControllerAnimated:YES];
return NO;
}

然后编写保存详细信息或更新详细信息的操作

-(IBAction)btnSaveClicked
{
CFErrorRef *aberror = NULL;
ABRecordRef aRecord = ABAddressBookGetPersonWithRecordID(addressBook, recordID);
if (aRecord) {
NSData *dataRef = UIImagePNGRepresentation(your uiimage);
ABPersonSetImageData(aRecord, (CFDataRef)dataRef, nil);
}
ABAddressBookSave(addressBook, aberror);
//BOOL didAdd = ABAddressBookSave(addressBook, nil);
CFRelease(addressBook);
}

确定你会得到结果..

关于iphone - 如何从地址簿编辑 ABPersonSetImageData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16097897/

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