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); |