日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS.访问通讯录.02.写入联系人

發(fā)布時間:2025/7/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS.访问通讯录.02.写入联系人 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、創(chuàng)建聯(lián)系人

1、創(chuàng)建聯(lián)系人記錄

ABRecord person = ABPersonCreate();

2、保存或修改單值屬性

bool ABRecordSetValue(ABRecordRef record,ABPropertyID property,CFTypeRef value,CFErrorRef *error );

例子:

CFError error = NULL;// 保存姓名 ABRecordSetValue(person,kABPersonFirstNameProperty,(__bridge CFTypeRef)self.txtFirstName.text,&error);ABRecordSetValue(person,kABPersonLastNameProperty,(__bridge CFTypeRef)self.txtLastName.text,&error);

3、保存或修改多值屬性

bool ABMultiValueAddValueAndLabel(ABMutableMultiValueRef multiValue,CFTypeRef value,CFStringRef label,ABMultiValueIdentifier *outIdentifier);

例:

// 創(chuàng)建可變多值類型對象 ABMutableMultiValueRef multi = ABMultiValueCreateMutable(kABMultiStringProper); // 設置電話號碼 ABMultiValueAddValueAndLabel(multi,(__bridge CFTypeRef)self.txtMobile.text,kABPersonPhoneMobileLabel,NULL); ABMultiValueAddValueAndLabel(multi,(__bridge CFTypeRef)self.txtIPhone.text,kABPersonPhoneIPhoneLabel,NULL); // 添加電話號碼到記錄 ABRecordSetValue(person,kABPersonPhoneProperty,multi,&error); CFRelease(multi);

4、添加記錄到數(shù)據(jù)庫

bool ABAddressBookAddRecord(ABAddressBookRef addressBook,ABRecordRef record,CFErrorRef *error);bool ABAddressBookSave(ABAddressBookSave addressBook,CFErrorRef *error);

例:

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL,&error);ABAddressBookAddRecord(addressBook,person,&error);ABAddressBookSave(addressBook,&error);CFRelease(person);CFRelease(addressBook);

?二、修改聯(lián)系人信息

1、獲取聯(lián)系人記錄

ABRecordRef ABAddressBookGetPersonWithRecordID(ABAddressBookRef addressBook,ABRecordID recordID);

三、刪除聯(lián)系人信息

bool ABAddressBookRemoveRecord(ABAddressBookRef addressBook,ABRecordRef record,CFErrorRef *error);

?四、實戰(zhàn)代碼

#import <UIKit/UIKit.h> #import <AddressBook/AddressBook.h> #import "T20140622161906DetailViewController.h"@interface T20140622161906ViewController : UITableViewController@property (strong,nonatomic) NSArray *listContacts;@end #import "T20140622161906ViewController.h"@interface T20140622161906ViewController ()@end@implementation T20140622161906ViewController- (void)viewDidLoad {[super viewDidLoad];CFErrorRef error = NULL;ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {if (granted) {//查詢所有self.listContacts = CFBridgingRelease(ABAddressBookCopyArrayOfAllPeople(addressBook));[self.tableView reloadData];CFRelease(addressBook);}}); } // 刪除聯(lián)系人后 重新加載列表信息 - (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:YES];CFErrorRef error = NULL;ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);self.listContacts = CFBridgingRelease(ABAddressBookCopyArrayOfAllPeople(addressBook));CFRelease(addressBook);[self.tableView reloadData];} - (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }#pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {return 1; }- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {return [self.listContacts count]; }- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {static NSString *CellIdentifier = @"reUseCell";UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];if (cell == nil) {cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];}ABRecordRef thisPerson = CFBridgingRetain([self.listContacts objectAtIndex:[indexPath row]]);NSString *firstName = CFBridgingRelease(ABRecordCopyValue(thisPerson, kABPersonFirstNameProperty));firstName = firstName != nil?firstName:@"";NSString *lastName = CFBridgingRelease(ABRecordCopyValue(thisPerson, kABPersonLastNameProperty));lastName = lastName != nil?lastName:@"";cell.textLabel.text = [NSString stringWithFormat:@"%@ %@",firstName,lastName];CFRelease(thisPerson);return cell; }- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {if ([[segue identifier] isEqualToString:@"showDetail"]) {NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];ABRecordRef thisPerson = CFBridgingRetain([self.listContacts objectAtIndex:[indexPath row]]);T20140622161906DetailViewController *detailViewController = [segue destinationViewController];ABRecordID personID = ABRecordGetRecordID(thisPerson);NSNumber *personIDAsNumber = [NSNumber numberWithInt:personID];detailViewController.personIDAsNumber = personIDAsNumber;CFRelease(thisPerson);} } @end #import <UIKit/UIKit.h> #import <AddressBook/AddressBook.h>@interface T20140622161906DetailViewController : UITableViewController@property (weak, nonatomic) IBOutlet UIImageView *imageView;@property (weak, nonatomic) IBOutlet UILabel *lblName; @property (weak, nonatomic) IBOutlet UITextField *txtMobile;@property (weak, nonatomic) IBOutlet UITextField *txtIPhone;@property (weak, nonatomic) IBOutlet UITextField *txtWorkEmail; @property (weak, nonatomic) IBOutlet UITextField *txtHomeEmail;@property (strong, nonatomic) NSNumber* personIDAsNumber;- (IBAction)saveClick:(id)sender; - (IBAction)deleteClick:(id)sender;@end #import "T20140622161906DetailViewController.h"@interface T20140622161906DetailViewController ()@end@implementation T20140622161906DetailViewController- (id)initWithStyle:(UITableViewStyle)style {self = [super initWithStyle:style];if (self) {// Custom initialization }return self; }- (void)viewDidLoad {[super viewDidLoad];ABRecordID personID = [self.personIDAsNumber intValue];CFErrorRef error = NULL;ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressBook, personID);//取得姓名屬性NSString *firstName = CFBridgingRelease(ABRecordCopyValue(person, kABPersonFirstNameProperty));firstName = firstName != nil?firstName:@"";NSString *lastName = CFBridgingRelease(ABRecordCopyValue(person, kABPersonLastNameProperty));lastName = lastName != nil?lastName:@"";[self.lblName setText: [NSString stringWithFormat:@"%@ %@",firstName,lastName]];//取得Email屬性ABMultiValueRef emailsProperty = ABRecordCopyValue(person, kABPersonEmailProperty);NSArray* emailsArray = CFBridgingRelease(ABMultiValueCopyArrayOfAllValues(emailsProperty));for(int index = 0; index< [emailsArray count]; index++){NSString *email = [emailsArray objectAtIndex:index];NSString *emailLabel = CFBridgingRelease(ABMultiValueCopyLabelAtIndex(emailsProperty, index));if ([emailLabel isEqualToString:(NSString*)kABWorkLabel]) {[self.txtWorkEmail setText:email];} else if ([emailLabel isEqualToString:(NSString*)kABHomeLabel]) {[self.txtHomeEmail setText:email];} else {NSLog(@"%@: %@", @"其它Email", email);}}CFRelease(emailsProperty);//取得電話號碼屬性ABMultiValueRef phoneNumberProperty = ABRecordCopyValue(person, kABPersonPhoneProperty);NSArray* phoneNumberArray = CFBridgingRelease(ABMultiValueCopyArrayOfAllValues(phoneNumberProperty));for(int index = 0; index< [phoneNumberArray count]; index++){NSString *phoneNumber = [phoneNumberArray objectAtIndex:index];NSString *phoneNumberLabel = CFBridgingRelease(ABMultiValueCopyLabelAtIndex(phoneNumberProperty, index));if ([phoneNumberLabel isEqualToString:(NSString*)kABPersonPhoneMobileLabel]) {[self.txtMobile setText:phoneNumber];} else if ([phoneNumberLabel isEqualToString:(NSString*)kABPersonPhoneIPhoneLabel]) {[self.txtIPhone setText:phoneNumber];} else {NSLog(@"%@: %@", @"其它電話", phoneNumber);}}CFRelease(phoneNumberProperty);//取得個人圖片if (ABPersonHasImageData(person)) {NSData *photoData = CFBridgingRelease(ABPersonCopyImageData(person));if(photoData){[self.imageView setImage:[UIImage imageWithData:photoData]];}}CFRelease(addressBook);}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];}- (IBAction)saveClick:(id)sender {ABRecordID personID = [self.personIDAsNumber intValue];CFErrorRef error = NULL;ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressBook, personID);// 設置電話號碼ABMutableMultiValueRef multi = ABMultiValueCreateMutable(kABMultiStringPropertyType);ABMultiValueAddValueAndLabel(multi, (__bridge CFTypeRef)self.txtMobile.text,kABPersonPhoneMobileLabel, NULL);ABMultiValueAddValueAndLabel(multi, (__bridge CFTypeRef)self.txtIPhone.text,kABPersonPhoneIPhoneLabel, NULL);// 添加電話號碼到數(shù)據(jù)庫ABRecordSetValue(person, kABPersonPhoneProperty, multi, &error);CFRelease(multi);// 設置Email屬性multi = ABMultiValueCreateMutable(kABMultiStringPropertyType);ABMultiValueAddValueAndLabel(multi, (__bridge CFTypeRef)self.txtHomeEmail.text,kABHomeLabel, NULL);ABMultiValueAddValueAndLabel(multi, (__bridge CFTypeRef)self.txtWorkEmail.text,kABWorkLabel, NULL);// 添加Email到數(shù)據(jù)庫ABRecordSetValue(person, kABPersonEmailProperty, multi, &error);CFRelease(multi);// 保存到數(shù)據(jù)庫ABAddressBookSave(addressBook, &error);CFRelease(addressBook);//導航回根視圖控制器ViewController [self.navigationController popToRootViewControllerAnimated:YES]; }- (IBAction)deleteClick:(id)sender {ABRecordID personID = [self.personIDAsNumber intValue];CFErrorRef error = NULL;ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressBook, personID);//刪除記錄ABAddressBookRemoveRecord(addressBook,person,&error);// 保存到數(shù)據(jù)庫ABAddressBookSave(addressBook, &error);CFRelease(addressBook);//導航回根視圖控制器ViewController [self.navigationController popToRootViewControllerAnimated:YES];} @end #import <UIKit/UIKit.h> #import <AddressBook/AddressBook.h>@interface T20140622161906AddViewController : UITableViewController@property (weak, nonatomic) IBOutlet UITextField *txtLastName; @property (weak, nonatomic) IBOutlet UITextField *txtFirstName;@property (weak, nonatomic) IBOutlet UITextField *txtMobile; @property (weak, nonatomic) IBOutlet UITextField *txtIPhone;@property (weak, nonatomic) IBOutlet UITextField *txtWorkEmail; @property (weak, nonatomic) IBOutlet UITextField *txtHomeEmail;- (IBAction)saveClick:(id)sender; - (IBAction)cancelClick:(id)sender;@end #import "T20140622161906AddViewController.h"@interface T20140622161906AddViewController ()@end@implementation T20140622161906AddViewController- (id)initWithStyle:(UITableViewStyle)style {self = [super initWithStyle:style];if (self) {// Custom initialization }return self; }- (void)viewDidLoad {[super viewDidLoad];// Uncomment the following line to preserve selection between presentations.// self.clearsSelectionOnViewWillAppear = NO;// Uncomment the following line to display an Edit button in the navigation bar for this view controller.// self.navigationItem.rightBarButtonItem = self.editButtonItem; }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }- (IBAction)saveClick:(id)sender {CFErrorRef error = NULL;ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);ABRecordRef person = ABPersonCreate();//保存姓名 ABRecordSetValue(person, kABPersonFirstNameProperty,(__bridge CFTypeRef)self.txtFirstName.text, &error);ABRecordSetValue(person, kABPersonLastNameProperty,(__bridge CFTypeRef)self.txtLastName.text, &error);// 設置電話號碼ABMutableMultiValueRef multi = ABMultiValueCreateMutable(kABMultiStringPropertyType);ABMultiValueAddValueAndLabel(multi, (__bridge CFTypeRef)self.txtMobile.text,kABPersonPhoneMobileLabel, NULL);ABMultiValueAddValueAndLabel(multi, (__bridge CFTypeRef)self.txtIPhone.text,kABPersonPhoneIPhoneLabel, NULL);// 添加電話號碼到記錄ABRecordSetValue(person, kABPersonPhoneProperty, multi, &error);CFRelease(multi);// 設置Email屬性multi = ABMultiValueCreateMutable(kABMultiStringPropertyType);ABMultiValueAddValueAndLabel(multi, (__bridge CFTypeRef)self.txtHomeEmail.text,kABHomeLabel, NULL);ABMultiValueAddValueAndLabel(multi, (__bridge CFTypeRef)self.txtWorkEmail.text,kABWorkLabel, NULL);// 添加Email到記錄ABRecordSetValue(person, kABPersonEmailProperty, multi, &error);CFRelease(multi);// 增加記錄到數(shù)據(jù)庫ABAddressBookAddRecord(addressBook, person, &error);// 保存到數(shù)據(jù)庫ABAddressBookSave(addressBook, &error);CFRelease(person);CFRelease(addressBook);[self dismissViewControllerAnimated:YES completion:nil];}- (IBAction)cancelClick:(id)sender {[self dismissViewControllerAnimated:YES completion:nil]; }@end

?

?

轉載于:https://www.cnblogs.com/cqchen/p/3803254.html

總結

以上是生活随笔為你收集整理的iOS.访问通讯录.02.写入联系人的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 97久久超碰| 色偷偷伊人 | 一区二区高清 | 婷婷丁香久久 | 国产老头户外野战xxxxx | 美女网站免费观看视频 | 91九色蝌蚪91por成人 | 国产成a人亚洲精v品无码 | 久久网站视频 | 色网站免费| 婷婷777| 人人妻人人澡人人爽国产一区 | 国产一级做a爱片久久毛片a | 在线免费色 | 色片在线免费观看 | 九九热精品在线视频 | 欧美韩国日本在线 | 亚洲色图p| 天天射寡妇 | 毛片毛多水多 | 欧美三级日本三级 | 日韩有码中文字幕在线观看 | 四虎精品一区二区三区 | 国产这里有精品 | 手机av免费观看 | 51精产品一区一区三区 | 中文免费视频 | 波多野结衣爱爱 | 欧美亚洲综合一区 | 夜色视频网 | 日本3级网站 | 青娱乐免费在线视频 | 免费在线国产精品 | 免费av中文字幕 | 欧亚乱熟女一区二区在线 | 张津瑜国内精品www在线 | 天天干天天干天天干天天 | 国产主播喷水 | 中文字幕一区二区久久人妻网站 | 午夜激情福利视频 | 99中文字幕| 国产熟妇另类久久久久 | feel性丰满白嫩嫩hd | 国产男人搡女人免费视频 | 国产成人精品电影 | 无码精品人妻一区二区 | 国产一区二区精品在线 | 日本特级黄色大片 | 亚洲av无码一区二区三区在线播放 | 伦理片av| 先锋影视av | 欧美v日本| 国产精品久久久久不卡 | 久久永久免费 | 国产精品无码一本二本三本色 | sm调教羞耻姿势图片 | 一级片免费网站 | 人人爽爽爽 | 91视频免费播放 | 68日本xxxxxⅹxxx22 | 欧美激情一二区 | 美女黄色在线观看 | 久久久久久久久久久久久久国产 | 大黄一级片 | 成人激情五月天 | 91中文字日产乱幕4区 | 96免费视频| 性xxxxbbbb | 国产91在线播放 | av手机在线免费观看 | 欧美野外猛男的大粗鳮 | 香蕉久久一区二区三区 | 天堂va蜜桃一区二区三区 | 婷婷六月网 | 色爱AV综合网国产精品 | 熟女av一区二区三区 | 日本亲子乱子伦xxxx50路 | 香蕉成视频人app下载安装 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 日韩精品一区二区三区电影 | 91ts人妖另类精品系列 | 色婷婷一区| 99热热热 | 91丨九色丨蝌蚪丨丝袜 | 精品视频在线免费看 | 天堂综合网 | 修女也疯狂3免费观看完整版 | 狼人伊人av | 怡春院视频 | 欧美精品极品 | 男女互操在线观看 | 午夜精品久久 | 人人人草 | 成人在线国产视频 | 超碰在线网址 | 大陆极品少妇内射aaaaa | 国产aa视频 | 国产日韩精品视频 | 国产一级理论 |