添加联系人到地址簿在iphone的Objective-C
-
19-09-2019 - |
题
什么是设置在地址簿中的街道地址等,并让用户保存在iPhone上的正确方法是什么?
编辑:除去代码特定问题,并使其更一般
解决方案
<强>这是如何通过创建一个ABRecordRef和使用的ViewController将其推入视图强>
要显示一个人一个完整的工作样品///////////////////////////// 它连接到一个自定义动作。
-(IBAction)addToAddressbook:(id)sender{
ABUnknownPersonViewController *unknownPersonViewController = [[ABUnknownPersonViewController alloc] init];
unknownPersonViewController.displayedPerson = (ABRecordRef)[self buildContactDetails];
unknownPersonViewController.allowsAddingToAddressBook = YES;
[self.navigationController pushViewController:unknownPersonViewController animated:YES];
[unknownPersonViewController release];
}
//////////////////////////// 这是构建ABrecordRef的人
- (ABRecordRef)buildContactDetails {
NSLog(@"building contact details");
ABRecordRef person = ABPersonCreate();
CFErrorRef error = NULL;
// firstname
ABRecordSetValue(person, kABPersonFirstNameProperty, @"Don Juan", NULL);
// email
ABMutableMultiValueRef email = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(email, @"expert.in@computer.com", CFSTR("email"), NULL);
ABRecordSetValue(person, kABPersonEmailProperty, email, &error);
CFRelease(email);
// Start of Address
ABMutableMultiValueRef address = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
NSMutableDictionary *addressDict = [[NSMutableDictionary alloc] init];
[addressDict setObject:@"The awesome road numba 1" forKey:(NSString *)kABPersonAddressStreetKey];
[addressDict setObject:@"0568" forKey:(NSString *)kABPersonAddressZIPKey];
[addressDict setObject:@"Oslo" forKey:(NSString *)kABPersonAddressCityKey];
ABMultiValueAddValueAndLabel(address, addressDict, kABWorkLabel, NULL);
ABRecordSetValue(person, kABPersonAddressProperty, address, &error);
[addressDict release];
CFRelease(address);
// End of Address
if (error != NULL)
NSLog(@"Error: %@", error);
[(id)person autorelease];
return person;
}
//////////////////////////// 线向上在头:
记住导入这些框架:
#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>
设置委托
ABNewPersonViewControllerDelegate
和将其添加到接口
ABNewPersonViewController *newPersonController;
其他提示
从目测来看,我想,而不是
ABMutableMultiValueRef address = ABMultiValueCreateMutable(kABMultiStringPropertyType);
您想
ABMutableMultiValueRef address = ABMultiValueCreateMutable(kABDictionaryPropertyType);
不隶属于 StackOverflow