1 ABAddressBookRef addressBook = ABAddressBookCreate(); 2 3 CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook); 4 5 for(int i = 0; i < CFArrayGetCount(results); i++) 6 { 7 ABRecordRef person = CFArrayGetValueAtIndex(results, i); 8 //读取firstname 9 NSString *personName = (NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty); 10 if(personName != nil) 11 textView.text = [textView.text stringByAppendingFormat:@"\n姓名:%@\n",personName]; 12 //读取lastname 13 NSString *lastname = (NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty); 14 if(lastname != nil) 15 textView.text = [textView.text stringByAppendingFormat:@"%@\n",lastname]; 16 //读取middlename 17 NSString *middlename = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNameProperty); 18 if(middlename != nil) 19 textView.text = [textView.text stringByAppendingFormat:@"%@\n",middlename]; 20 //读取prefix前缀 21 NSString *prefix = (NSString*)ABRecordCopyValue(person, kABPersonPrefixProperty); 22 if(prefix != nil) 23 textView.text = [textView.text stringByAppendingFormat:@"%@\n",prefix]; 24 //读取suffix后缀 25 NSString *suffix = (NSString*)ABRecordCopyValue(person, kABPersonSuffixProperty); 26 if(suffix != nil) 27 textView.text = [textView.text stringByAppendingFormat:@"%@\n",suffix]; 28 //读取nickname呢称 29 NSString *nickname = (NSString*)ABRecordCopyValue(person, kABPersonNicknameProperty); 30 if(nickname != nil) 31 textView.text = [textView.text stringByAppendingFormat:@"%@\n",nickname]; 32 //读取firstname拼音音标 33 NSString *firstnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonFirstNamePhoneticProperty); 34 if(firstnamePhonetic != nil) 35 textView.text = [textView.text stringByAppendingFormat:@"%@\n",firstnamePhonetic]; 36 //读取lastname拼音音标 37 NSString *lastnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonLastNamePhoneticProperty); 38 if(lastnamePhonetic != nil) 39 textView.text = [textView.text stringByAppendingFormat:@"%@\n",lastnamePhonetic]; 40 //读取middlename拼音音标 41 NSString *middlenamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNamePhoneticProperty); 42 if(middlenamePhonetic != nil) 43 textView.text = [textView.text stringByAppendingFormat:@"%@\n",middlenamePhonetic]; 44 //读取organization公司 45 NSString *organization = (NSString*)ABRecordCopyValue(person, kABPersonOrganizationProperty); 46 if(organization != nil) 47 textView.text = [textView.text stringByAppendingFormat:@"%@\n",organization]; 48 //读取jobtitle工作 49 NSString *jobtitle = (NSString*)ABRecordCopyValue(person, kABPersonJobTitleProperty); 50 if(jobtitle != nil) 51 textView.text = [textView.text stringByAppendingFormat:@"%@\n",jobtitle]; 52 //读取department部门 53 NSString *department = (NSString*)ABRecordCopyValue(person, kABPersonDepartmentProperty); 54 if(department != nil) 55 textView.text = [textView.text stringByAppendingFormat:@"%@\n",department]; 56 //读取birthday生日 57 NSDate *birthday = (NSDate*)ABRecordCopyValue(person, kABPersonBirthdayProperty); 58 if(birthday != nil) 59 textView.text = [textView.text stringByAppendingFormat:@"%@\n",birthday]; 60 //读取note备忘录 61 NSString *note = (NSString*)ABRecordCopyValue(person, kABPersonNoteProperty); 62 if(note != nil) 63 textView.text = [textView.text stringByAppendingFormat:@"%@\n",note]; 64 //第一次添加该条记录的时间 65 NSString *firstknow = (NSString*)ABRecordCopyValue(person, kABPersonCreationDateProperty); 66 NSLog(@"第一次添加该条记录的时间%@\n",firstknow); 67 //最后一次修改該条记录的时间 68 NSString *lastknow = (NSString*)ABRecordCopyValue(person, kABPersonModificationDateProperty); 69 NSLog(@"最后一次修改該条记录的时间%@\n",lastknow); 70 71 //获取email多值 72 ABMultiValueRef email = ABRecordCopyValue(person, kABPersonEmailProperty); 73 int emailcount = ABMultiValueGetCount(email); 74 for (int x = 0; x < emailcount; x++) 75 { 76 //获取email Label 77 NSString* emailLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(email, x)); 78 //获取email值 79 NSString* emailContent = (NSString*)ABMultiValueCopyValueAtIndex(email, x); 80 textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",emailLabel,emailContent]; 81 } 82 //读取地址多值 83 ABMultiValueRef address = ABRecordCopyValue(person, kABPersonAddressProperty); 84 int count = ABMultiValueGetCount(address); 85 86 for(int j = 0; j < count; j++) 87 { 88 //获取地址Label 89 NSString* addressLabel = (NSString*)ABMultiValueCopyLabelAtIndex(address, j); 90 textView.text = [textView.text stringByAppendingFormat:@"%@\n",addressLabel]; 91 //获取該label下的地址6属性 92 NSDictionary* personaddress =(NSDictionary*) ABMultiValueCopyValueAtIndex(address, j); 93 NSString* country = [personaddress valueForKey:(NSString *)kABPersonAddressCountryKey]; 94 if(country != nil) 95 textView.text = [textView.text stringByAppendingFormat:@"国家:%@\n",country]; 96 NSString* city = [personaddress valueForKey:(NSString *)kABPersonAddressCityKey]; 97 if(city != nil) 98 textView.text = [textView.text stringByAppendingFormat:@"城市:%@\n",city]; 99 NSString* state = [personaddress valueForKey:(NSString *)kABPersonAddressStateKey]; 100 if(state != nil) 101 textView.text = [textView.text stringByAppendingFormat:@"省:%@\n",state]; 102 NSString* street = [personaddress valueForKey:(NSString *)kABPersonAddressStreetKey]; 103 if(street != nil) 104 textView.text = [textView.text stringByAppendingFormat:@"街道:%@\n",street]; 105 NSString* zip = [personaddress valueForKey:(NSString *)kABPersonAddressZIPKey]; 106 if(zip != nil) 107 textView.text = [textView.text stringByAppendingFormat:@"邮编:%@\n",zip]; 108 NSString* coutntrycode = [personaddress valueForKey:(NSString *)kABPersonAddressCountryCodeKey]; 109 if(coutntrycode != nil) 110 textView.text = [textView.text stringByAppendingFormat:@"国家编号:%@\n",coutntrycode]; 111 } 112 113 //获取dates多值 114 ABMultiValueRef dates = ABRecordCopyValue(person, kABPersonDateProperty); 115 int datescount = ABMultiValueGetCount(dates); 116 for (int y = 0; y < datescount; y++) 117 { 118 //获取dates Label 119 NSString* datesLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(dates, y)); 120 //获取dates值 121 NSString* datesContent = (NSString*)ABMultiValueCopyValueAtIndex(dates, y); 122 textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",datesLabel,datesContent]; 123 } 124 //获取kind值 125 CFNumberRef recordType = ABRecordCopyValue(person, kABPersonKindProperty); 126 if (recordType == kABPersonKindOrganization) { 127 // it‘s a company 128 NSLog(@"it‘s a company\n"); 129 } else { 130 // it‘s a person, resource, or room 131 NSLog(@"it‘s a person, resource, or room\n"); 132 } 133 134 135 //获取IM多值 136 ABMultiValueRef instantMessage = ABRecordCopyValue(person, kABPersonInstantMessageProperty); 137 for (int l = 1; l < ABMultiValueGetCount(instantMessage); l++) 138 { 139 //获取IM Label 140 NSString* instantMessageLabel = (NSString*)ABMultiValueCopyLabelAtIndex(instantMessage, l); 141 textView.text = [textView.text stringByAppendingFormat:@"%@\n",instantMessageLabel]; 142 //获取該label下的2属性 143 NSDictionary* instantMessageContent =(NSDictionary*) ABMultiValueCopyValueAtIndex(instantMessage, l); 144 NSString* username = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageUsernameKey]; 145 if(username != nil) 146 textView.text = [textView.text stringByAppendingFormat:@"username:%@\n",username]; 147 148 NSString* service = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageServiceKey]; 149 if(service != nil) 150 textView.text = [textView.text stringByAppendingFormat:@"service:%@\n",service]; 151 } 152 153 //读取电话多值 154 ABMultiValueRef phone = ABRecordCopyValue(person, kABPersonPhoneProperty); 155 for (int k = 0; k<ABMultiValueGetCount(phone); k++) 156 { 157 //获取电话Label 158 NSString * personPhoneLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phone, k)); 159 //获取該Label下的电话值 160 NSString * personPhone = (NSString*)ABMultiValueCopyValueAtIndex(phone, k); 161 162 textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",personPhoneLabel,personPhone]; 163 } 164 165 //获取URL多值 166 ABMultiValueRef url = ABRecordCopyValue(person, kABPersonURLProperty); 167 for (int m = 0; m < ABMultiValueGetCount(url); m++) 168 { 169 //获取电话Label 170 NSString * urlLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(url, m)); 171 //获取該Label下的电话值 172 NSString * urlContent = (NSString*)ABMultiValueCopyValueAtIndex(url,m); 173 174 textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",urlLabel,urlContent]; 175 } 176 177 //读取照片 178 NSData *image = (NSData*)ABPersonCopyImageData(person); 179 180 181 UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(200, 0, 50, 50)]; 182 [myImage setImage:[UIImage imageWithData:image]]; 183 myImage.opaque = YES; 184 [textView addSubview:myImage]; 185 186 187 188 } 189 190 CFRelease(results); 191 CFRelease(addressBook); 192 193 复制代码
原文:http://www.cnblogs.com/sixindev/p/4590493.html