001 | ABAddressBookRef addressBook = ABAddressBookCreate(); |
002 | |
003 | CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook); |
004 | |
005 | for ( int i = 0; i < CFArrayGetCount(results); i++) |
006 | { |
007 | ABRecordRef person = CFArrayGetValueAtIndex(results, i); |
008 | //读取firstname |
009 | NSString *personName = (NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty); |
010 | if (personName != nil) |
011 | textView.text = [textView.text stringByAppendingFormat:@ "\n姓名:%@\n" ,personName]; |
012 | //读取lastname |
013 | NSString *lastname = (NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty); |
014 | if (lastname != nil) |
015 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,lastname]; |
016 | //读取middlename |
017 | NSString *middlename = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNameProperty); |
018 | if (middlename != nil) |
019 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,middlename]; |
020 | //读取prefix前缀 |
021 | NSString *prefix = (NSString*)ABRecordCopyValue(person, kABPersonPrefixProperty); |
022 | if (prefix != nil) |
023 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,prefix]; |
024 | //读取suffix后缀 |
025 | NSString *suffix = (NSString*)ABRecordCopyValue(person, kABPersonSuffixProperty); |
026 | if (suffix != nil) |
027 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,suffix]; |
028 | //读取nickname呢称 |
029 | NSString *nickname = (NSString*)ABRecordCopyValue(person, kABPersonNicknameProperty); |
030 | if (nickname != nil) |
031 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,nickname]; |
032 | //读取firstname拼音音标 |
033 | NSString *firstnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonFirstNamePhoneticProperty); |
034 | if (firstnamePhonetic != nil) |
035 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,firstnamePhonetic]; |
036 | //读取lastname拼音音标 |
037 | NSString *lastnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonLastNamePhoneticProperty); |
038 | if (lastnamePhonetic != nil) |
039 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,lastnamePhonetic]; |
040 | //读取middlename拼音音标 |
041 | NSString *middlenamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNamePhoneticProperty); |
042 | if (middlenamePhonetic != nil) |
043 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,middlenamePhonetic]; |
044 | //读取organization公司 |
045 | NSString *organization = (NSString*)ABRecordCopyValue(person, kABPersonOrganizationProperty); |
046 | if (organization != nil) |
047 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,organization]; |
048 | //读取jobtitle工作 |
049 | NSString *jobtitle = (NSString*)ABRecordCopyValue(person, kABPersonJobTitleProperty); |
050 | if (jobtitle != nil) |
051 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,jobtitle]; |
052 | //读取department部门 |
053 | NSString *department = (NSString*)ABRecordCopyValue(person, kABPersonDepartmentProperty); |
054 | if (department != nil) |
055 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,department]; |
056 | //读取birthday生日 |
057 | NSDate *birthday = (NSDate*)ABRecordCopyValue(person, kABPersonBirthdayProperty); |
058 | if (birthday != nil) |
059 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,birthday]; |
060 | //读取note备忘录 |
061 | NSString *note = (NSString*)ABRecordCopyValue(person, kABPersonNoteProperty); |
062 | if (note != nil) |
063 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,note]; |
064 | //第一次添加该条记录的时间 |
065 | NSString *firstknow = (NSString*)ABRecordCopyValue(person, kABPersonCreationDateProperty); |
066 | NSLog(@ "第一次添加该条记录的时间%@\n" ,firstknow); |
067 | //最后一次修改該条记录的时间 |
068 | NSString *lastknow = (NSString*)ABRecordCopyValue(person, kABPersonModificationDateProperty); |
069 | NSLog(@ "最后一次修改該条记录的时间%@\n" ,lastknow); |
070 | |
071 | //获取email多值 |
072 | ABMultiValueRef email = ABRecordCopyValue(person, kABPersonEmailProperty); |
073 | int emailcount = ABMultiValueGetCount(email); |
074 | for ( int x = 0; x < emailcount; x++) |
075 | { |
076 | //获取email Label |
077 | NSString* emailLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(email, x)); |
078 | //获取email值 |
079 | NSString* emailContent = (NSString*)ABMultiValueCopyValueAtIndex(email, x); |
080 | textView.text = [textView.text stringByAppendingFormat:@ "%@:%@\n" ,emailLabel,emailContent]; |
081 | } |
082 | //读取地址多值 |
083 | ABMultiValueRef address = ABRecordCopyValue(person, kABPersonAddressProperty); |
084 | int count = ABMultiValueGetCount(address); |
085 | |
086 | for ( int j = 0; j < count; j++) |
087 | { |
088 | //获取地址Label |
089 | NSString* addressLabel = (NSString*)ABMultiValueCopyLabelAtIndex(address, j); |
090 | textView.text = [textView.text stringByAppendingFormat:@ "%@\n" ,addressLabel]; |
091 | //获取該label下的地址6属性 |
092 | NSDictionary* personaddress =(NSDictionary*) ABMultiValueCopyValueAtIndex(address, j); |
093 | NSString* country = [personaddress valueForKey:(NSString *)kABPersonAddressCountryKey]; |
094 | if (country != nil) |
095 | textView.text = [textView.text stringByAppendingFormat:@ "国家:%@\n" ,country]; |
096 | NSString* city = [personaddress valueForKey:(NSString *)kABPersonAddressCityKey]; |
097 | if (city != nil) |
098 | textView.text = [textView.text stringByAppendingFormat:@ "城市:%@\n" ,city]; |
099 | 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); |