У меня есть следующий код, который я пытаюсь использовать для установки AIM и свойства Skype нового контакта, я добавляю в адресную книгу:Как установить свойство Instant Message на контакт Адресной книги?
ABRecordRef record = ABPersonCreate();
CFErrorRef an_error = NULL;
ABMutableMultiValueRef multi_aim = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multi_aim, @"ExampleNick", kABPersonInstantMessageServiceAIM, NULL);
ABRecordSetValue(record, kABPersonInstantMessageProperty, multi_aim, &an_error);
ABMutableMultiValueRef multi_skype = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multi_skype, @"example.nick", kABPersonInstantMessageServiceSkype, NULL);
ABRecordSetValue(record, kABPersonInstantMessageProperty, multi_skype, &an_error);
if (an_error != NULL) {
NSLog(@"Error while creating person");
}
CFErrorRef error = NULL;
ABAddressBookRef address_book = ABAddressBookCreateWithOptions(NULL, &error);
ABAddressBookRequestAccessWithCompletion(address_book, ^(bool granted, CFErrorRef error) {
if (!granted) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Unable to access address book"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:nil];
[alert show];
} else {
BOOL is_added = ABAddressBookAddRecord(address_book, record, &error);
if (is_added) {
NSLog(@"Address book entry added");
} else {
NSLog(@"ERROR adding address book entry: %@", error);
}
error = NULL;
BOOL is_saved = ABAddressBookSave(address_book, &error);
if (is_saved) {
NSLog(@"Saved address book");
} else {
NSLog(@"ERROR saving address book: %@", error);
}
}
CFRelease(record);
CFRelease(multi_aim);
CFRelease(multi_skype);
CFRelease(address_book);
});
(я также добавление и фамилии но оставил это из примера для краткости)
Когда запись добавляется, все поля, кроме полей AIM и Skype, заполняются. Что я делаю не так?
Вы можете просто объяснить мне содержание словаря NSDictionary *. Я немного смущен этим и как использовать тот же словарь для нескольких IM. Пожалуйста, укажите этот код также – milanpanchal
@milanpanchal, словарь содержит информацию, которую вы хотите добавить. (kABPersonInstantMessageServiceSkype, kABPersonInstantMessageServiceKey) означает, что это будет идентификатор Skype. (@ "YourSkypeIDGoesHere", kABPersonInstantMessageUsernameKey) - сам идентификатор Skype. Вы не можете повторно использовать этот словарь для нескольких записей AB, пока все эти контакты не будут иметь тот же идентификатор Skype. Все три константы из файла заголовка ABPerson.h. Укажите код для вас? Простите, нет. Приведенный выше код сам объясняется. Обратитесь к документации Apple. –
Спасибо за предоставленную информацию. Я пытался повторно использовать тот же словарь, который вызывает ошибку. Теперь все установлено – milanpanchal