При изменении изображения контакта - PullRequest
1 голос
/ 17 ноября 2011

Я пытаюсь изменить изображение выбранного контакта в peoplePickerNavigationController, но когда я выбираю контакт, не меняет изображение и не показывает ошибки.

Ну, насколько я знаю,Все нормально!Чего-то не хватает?

Это код:

ABAddressBookRef aBook = ABAddressBookCreate();

UIImage *img = [UIImage imageNamed:@"90x90.png"];
NSData *dataRef = UIImagePNGRepresentation(img);
CFDataRef cfdata = CFDataCreate(NULL, [dataRef bytes], [dataRef length]);
CFErrorRef error;

if(ABPersonRemoveImageData(person, &error)){
    NSLog(@"OK");
}
if(ABAddressBookSave(aBook, &error)){
    NSLog(@"OK");
}

if(ABPersonSetImageData(person, cfdata, &error)){
    NSLog(@"OK");
}
if(ABAddressBookSave(aBook, &error)){
    NSLog(@"OK");
}

CFRelease(cfdata);

[self dismissModalViewControllerAnimated:YES];
return NO;

Помните, что приведенный выше код находится внутри BOOL:

- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {  }

Спасибо!

1 Ответ

0 голосов
/ 18 ноября 2011

Успешно решить, для тех, у кого в будущем будет тот же вопрос, просто используйте ABRecordGetRecordID и ABAddressBookGetPersonWithRecordID и следуйте приведенному ниже коду:

ABAddressBookRef aBook = ABAddressBookCreate();

NSNumber *recordId = [NSNumber numberWithInteger:ABRecordGetRecordID(person)];
ABRecordRef pID = ABAddressBookGetPersonWithRecordID(aBook,recordId.integerValue);

UIImage *img = [UIImage imageNamed:@"90x90.png"];
NSData *dataRef = UIImagePNGRepresentation(img);
CFDataRef cfdata = CFDataCreate(NULL, [dataRef bytes], [dataRef length]);
CFErrorRef error;

ABPersonRemoveImageData(pID, &error);
ABAddressBookSave(aBook, &error);

ABPersonSetImageData(pID, cfdata, &error);
ABAddressBookSave(aBook, &error);

CFRelease(cfdata);

[self dismissModalViewControllerAnimated:YES];
return NO;

Спасибо!

...