亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

iOS-----使用addressBook管理聯系人之修改聯系人

2019-11-14 17:54:25
字體:
來源:轉載
供稿:網友

使用addressBook管理聯系人之修改聯系人

 

修改聯系人

修改聯系人先從底層地址簿中加載一條ABRecordRef記錄,然后對這條ABRecordRef記錄的屬性值進行修改,修改完成后把這條修改后的ABRecordRef記錄存入地址簿即可.

修改聯系人的步驟大致如下

1

獲取底層地址簿中已有的聯系人對應的ABRecordRef記錄

2

根據需要修改的屬性,調用ABRecordSetValue()函數修改ABRecordRef記錄中指定屬性的值

3

修改完成后調用ABAddressBookSave()函數將剛剛所做的修改保存到底層地址簿

 

#import  <AddressBook/AddressBook.h>#import  “LCUpdatePersonViewController.h”#define  PHONE_PROPERTY_KEY @”phone”#define  MAIL_PROPERTY_KEY @”mail”@interface  LCUpdatePersonViewController(){   ABAddressBookRef ab;   // 定義ABRecordRef 類型的變量保存當前正在更新的記錄   ABRecordRef rec;   // 使用該變量定義當前動態添加的行的Y坐標   NSInteger  curLineY;  // 定義一個NSMUtableDictionary來保存所有動態添加的文本框   NSMUtableDictionary *textFields;  // 定義ABMutableMultiValueRef變量記錄正在修改的電話號碼屬性值  ABMutableMultiValueRef phoneValue;  // 定義ABMutableMultiValueRef變量記錄正在修改的電子郵件屬性值  ABMutableMultiValueRef mailValue;}@end@implementation  LCUpdatePersonViewController- (void)viewDidLoad{   [super  viewDidLoad];textFields = [NSMutableDictionary  dictionary];curLineY = 120;CFErrorRef  error = nil;// 創建ABAddressBook, 該函數的第1個參數暫時并未使用,直接傳入NULL即可ab = ABAddressBookRequestaccessWithCompletion(ab,^(bool  granted, CFErrorRef  error){   // 如果用戶允許訪問地址簿   if(granted)      {        // 獲取ID為1的ABRecordRef記錄       rec = ABAddressBookGetPersonWithRecordID(ab, 1);        // 獲取rec記錄中kABPersonFirstNameProperty(名字)屬性的值    NSString *firstName = (__bridge NSString *)ABRecordCopyValue(rec, kABPersonFirstNameProperty);    // 獲取rec記錄中kABPersonLastNameProperty(姓氏)屬性值    NSString *lastName = (__bridge  NSString*)ABRecordCopyValue(rec, kABPersonLastNameProperty );   // 控制界面上文本框顯示rec記錄中姓氏、名字的屬性值   self.firstNameField.text =  firstName;   self.lastNameField.text =  lastName;   //  獲取rec記錄中kABPersonPhoneProperty(電話號碼)屬性值   phoneValue = ABRecordCopyValue(rec, kABPersonPhoneProperty);   // 調用addLabelAndTextField:propertyKey:方法顯示電話號碼[self addLabelAndTextField:phoneValue propertyKey:PHONE_PROPERTY_KEY];//  獲取rec記錄中kABPersonEmailProperty(電子郵件)屬性值mailValue = ABRecordCopyValue(rec, kABPersonEmailProperty);// 調用addLabelAndTextField:propertyKey:方法顯示電子郵件[self  addLabelAndTextField:mailValue  propertyKey:MAIL_PROPERTY_KEY];}});}}- (void) addLabelAndTextField:(ABMutableMultiValueRef) multiValue propertyKey:(NSString *)property{   // 獲取multiValue包含的數據條數   NSInteger num = ABMultiValueGetCount(multiValue);   NSMutableArray *textFieldArray = [NSMutableArray array];  // 依次遍歷multiValue所包含的每條數據  for (int i = 0; i < num; i++ ){  curLineY += 38;  // 創建UILabel,顯示本條數據的label  UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, curLineY, 70, 30)];NSString *labelStr = (__bridge NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(multiValue,  i));label.text = labelStr;//  將該UILabel添加到程序界面上[self.view performSelectorOnMainThread:@selector(addSubview:)withObject:label  waitUntilDone:YES];   // 創建UITextField顯示本條數據的value   UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(98, curLineY, 202, 30)];   textField.borderStyle = UITextBorderStyleRoundedRect;   NSString *valueStr  = (__bridge NSString*)ABMultiValueCopyValueAtIndex(multiValue, i);   textField.text = valueStr;   [textField addTarget:self action:@selector(finishEdit:) forControlEvents:UIControlEventEditingDidEndOnExit];//  使用NSArray集合來保存動態創建的UITextField控件   [textFieldArray addObject: textField];   // 將UITextField添加到程序界面上   [self.view performSelectorOnMainThread:@selector(addSubview:)  withObject:textField waitUntilDone:YES];}  // 將程序動態生成的所有textField保存到NSMutableDictionary中  [textFields setValue:textFieldArray forKey:property];}- (void) updateMultiValue: (ABMutableMultiValueRef) multiValue propertyKey :( NSString* )propertyKey property:(ABPropertyID) property{   // 取出該屬性對應的所有UITextView組成的NSArray   NSArray *textFieldArray = textFields[propertyKey];   NSInteger num = textFieldArray.count;   // 創建一個新的ABMutableMultiValueRef   ABMutableMultiValueRef newMulti = ABMultiValueCreateMutable(property);   // 遍歷UITextView組成的NSArray集合中的每個UITextField控件     for(int i = 0; i< num; i++)     {        // 獲取第i個UITextField控件中的字符串,該字符串作為新的值        NSString *value = ((UITextField*)textFieldArray[i]).text;        // 獲取第i 條數據原有的label        CFStringRef label = ABMultiValueCopyLabelAtIndex(multiValue, 0);        // 添加新的值和原有的label(label不需要修改)        ABMultiValueAddValueAndLabel(newMutli, (__bridgeCFStringRef)value,  label,  NULL);}ABRecordSetValue(rec,  property,  newMutli,  NULL);}- (IBAction)update:(id)sender{NSString *firstName = self.firstnameField.text;NSString *lastName = self.lastnameField.text;// 修改rec記錄中的kABPersonFirstNameProperty、kABPersonLastNameProperty屬性ABRecordSetValue(rec,  kABPersonFirstNameProperty,  (__bridge CFStringRef)firstName, NULL);ABRecordSetValue(rec,  kABPersonLastNameProperty,  (__bridge CFStringRef)lastName, NULL);// 調用updateMultiValue:propertyKey:property:方法修改ABRecordRef的//  kABPersonPhoneProperty屬性[self  updateMultiValue:phoneValue  propertyKey:PHONE_PROPERTY_KEY  property:kABPersonPhoneProperty];// 調用updateMultiValue:propertyKey:property:方法修改ABRecordRef的//  kABPersonEmailProperty屬性[self  updateMultiValue:mailValue  propertyKey:MAIL_PROPERTY_KEY  property:kABPersonEmailProperty];    if(ABAddressBookSave(ab, NULL))   {       [self showAlert:@”修改成功”];    }    else   {      [self showAlert:@”修改出現錯誤”];   }}-  (IBAction)finishEdit:(id)sender{   [sender resignFirstResponder];}-  (void)showAlert:(NSString *)msg{   // 使用UIAlertView顯示msg信息  [[[UIAlertView alloc] initWithTitle:@” 提 示 ”                                     message:msg                                     delegate:nil                         cancelButtonTitle:@”確定”                         otherButtonTitles:nil] show];}@end

 

注意

為了讓界面能動態顯示ABMutableMultiValueRef包含的每一條數據,程序定義了addLabelAndTextField:propertyKey:方法來動態加載ABMutableMultiValueRef中的每一條數據----程序為每條數據添加一行,用UILabel顯示這條數據的label,用UITextField顯示這條數據的value

 

效果圖:

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日韩区| 国产欧美日韩视频| 黄网动漫久久久| 亚洲性日韩精品一区二区| 在线看日韩欧美| 91大神在线播放精品| 亚洲美女精品成人在线视频| 国产亚洲欧美一区| 亚洲成人av中文字幕| 中文字幕亚洲精品| 日韩av一区在线| 亚洲iv一区二区三区| 国产精品一区二区三区毛片淫片| 狠狠色香婷婷久久亚洲精品| 高清日韩电视剧大全免费播放在线观看| 日韩美女在线播放| 亚洲天堂av女优| 尤物精品国产第一福利三区| 九九热99久久久国产盗摄| 欧美成人在线影院| 国产精品黄色影片导航在线观看| 成人黄色av网| 97香蕉超级碰碰久久免费的优势| 中日韩美女免费视频网址在线观看| 久久琪琪电影院| 精品二区三区线观看| 国产精品高潮呻吟久久av无限| 久久精品视频在线观看| 成人av在线网址| 亚洲va久久久噜噜噜| 欧美xxxx做受欧美| 欧美大片va欧美在线播放| 亚洲网站在线观看| 国产精品久久久久久久久粉嫩av| 欧美日韩国产精品一区二区三区四区| 萌白酱国产一区二区| 亚洲一区亚洲二区亚洲三区| 欧美一区深夜视频| 亚洲日韩欧美视频| 91av在线网站| 国产亚洲精品久久久久久| 国产伦精品一区二区三区精品视频| 日韩国产精品一区| 在线观看国产精品91| 欧美大片欧美激情性色a∨久久| 欧美性xxxxx| 亚洲精品欧美日韩专区| 亚洲国产欧美一区二区三区同亚洲| 日韩av资源在线播放| 最近2019中文字幕mv免费看| 九九精品在线播放| 国产精品永久免费在线| 欧美色视频日本版| 欧美性黄网官网| 欧美亚洲日本网站| 国产精品久久久久久久7电影| 中文国产亚洲喷潮| 欧美日韩成人网| 国产女人精品视频| 69av在线视频| 成人福利视频网| 久久99久久99精品中文字幕| 欧美综合国产精品久久丁香| 国产成人精品久久亚洲高清不卡| 亚洲男人天堂手机在线| 久久久久久久久久国产| 欧美性猛交xxx| 亚洲第一区中文99精品| 亚洲国产小视频在线观看| 亚洲新中文字幕| 欧美亚洲国产成人精品| 亚洲精品v天堂中文字幕| 国产精品综合不卡av| 中文字幕少妇一区二区三区| 91欧美日韩一区| 一本色道久久综合狠狠躁篇怎么玩| 日韩美女视频在线观看| 91久久久亚洲精品| 91chinesevideo永久地址| 姬川优奈aav一区二区| 国产精品电影在线观看| 欧美激情欧美激情| 国产精品日韩在线一区| 欧美电影在线观看完整版| 亚洲高清久久网| 高跟丝袜一区二区三区| 久久久久久久一区二区三区| 国产精品稀缺呦系列在线| 国产伦精品一区二区三区精品视频| 久久久久久久久久久亚洲| 欧美成人黄色小视频| 国产精品∨欧美精品v日韩精品| 久久久久久久久久久亚洲| 日韩av电影国产| 91久热免费在线视频| 91香蕉电影院| 日韩欧美第一页| 最新的欧美黄色| 成人欧美一区二区三区在线| 欧美国产高跟鞋裸体秀xxxhd| 日本道色综合久久影院| 欧美激情欧美激情| 国产亚洲视频中文字幕视频| 国产极品jizzhd欧美| 国产精品视频在线观看| 日韩在线观看免费全集电视剧网站| 精品视频久久久| 国产综合色香蕉精品| 91精品国产色综合久久不卡98| 国产精品日韩欧美综合| 日韩精品免费在线播放| 2019国产精品自在线拍国产不卡| 国产性猛交xxxx免费看久久| 欧美大片在线看| 国产一区二区三区在线观看视频| 亚洲精品mp4| 伊人久久免费视频| 国产精品久久久久久久午夜| 欧美日韩国产在线看| 日韩专区在线播放| 亚洲免费影视第一页| 亚洲跨种族黑人xxx| 日韩免费观看高清| 欧美日韩亚洲精品一区二区三区| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲第一福利视频| 亚洲精品日韩在线| 亚洲理论片在线观看| 国产精品视频永久免费播放| 人九九综合九九宗合| 午夜精品福利在线观看| 亚洲色图欧美制服丝袜另类第一页| 精品视频在线观看日韩| 精品国内亚洲在观看18黄| 国产精品91在线观看| 亚洲精品国产电影| 久久久久久午夜| 中文字幕在线视频日韩| 国产精品99免视看9| 亚洲国产精彩中文乱码av| 日韩电影大全免费观看2023年上| 日本免费在线精品| 亚洲电影免费观看高清完整版在线观看| 欧美麻豆久久久久久中文| 久久精品欧美视频| 亚洲女人天堂成人av在线| 国产精品嫩草影院久久久| 亚洲无线码在线一区观看| 亚洲大胆人体在线| www.色综合| 精品国产一区二区在线| 色噜噜久久综合伊人一本| 日韩精品在线视频| 欧美日韩国产在线播放| 热门国产精品亚洲第一区在线| 日本一区二区在线免费播放| 亚洲欧美激情在线视频| 欧美在线视频观看| 亚洲午夜未满十八勿入免费观看全集| 亚州国产精品久久久| 成人在线精品视频| 色综久久综合桃花网| 亚洲香蕉成人av网站在线观看| 亚洲成人久久久久|