如何从地址簿中的联系人select生日标签?

我使用地址簿获取联系人列表及其标签。 (如手机,主,家庭,工作,传真等)。 我提取了电话,联系人的电子邮件标签,但我没有取得生日,周年纪念标签。 这是我生日class的代码。

ABMultiValueRef dateofbirth1 = ABRecordCopyValue(contactPerson, kABPersonBirthdayProperty); // Assign the Date Of birth NSString *dob1=[NSDateFormatter localizedStringFromDate:(__bridge NSDate *)(dateofbirth1) dateStyle:NSDateFormatterLongStyle timeStyle:0]; // Changing to string format using Date Formatter. if(!(dob1==nil)) { // DOB is Not Nill } 

这是我的取生日标签代码

  if([arrayOfDatesAsStrings count]>0) { for (int j = 0; j < [arrayOfDatesAsStrings count] ; j++) { **//This is the fetching birthday label code and following code is crashed** CFStringRef locLabel1 = ABMultiValueCopyLabelAtIndex((__bridge ABMultiValueRef)(dob1), j); NSString *phoneLabel1 =(__bridge NSString*) ABAddressBookCopyLocalizedLabel(locLabel1); personD.dateOfBirth = phone1; NSLog(@" %@ %@",phoneLabel1,personD.dateOfBirth); } } else { NSLog(@"Date Of Birth was Not set "); } 

我能为此做些什么? 谁能帮我? 崩溃错误消息是:“线程1:Exc_BAD_ACCESS(代码= 1,地址= 0x38)”

从设备获取联系人

 if (isIOS9) { //checking iOS version of Device CNContactStore *store = [[CNContactStore alloc] init]; //keys with fetching properties NSArray *keys = @[CNContactFamilyNameKey, CNContactGivenNameKey, CNContactPhoneNumbersKey, CNContactEmailAddressesKey,CNContactPostalAddressesKey, CNLabelWork, CNLabelDateAnniversary]; NSString *containerId = store.defaultContainerIdentifier; NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId]; NSError *error; NSArray *cnContacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&error]; DLOG(@"cnContacts %lu",(unsigned long)cnContacts.count); if (error) { //error } else { for (CNContact *contact in cnContacts) { //iterate over cnContacts to get details } } } else { //for below iOS 9 ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef arrPersons = ABAddressBookCopyArrayOfAllPeople(addressBook); CFIndex count = ABAddressBookGetPersonCount(addressBook); NSLog(@"cnContacts %lu",(unsigned long)count); for (int i = 0; i < count; i++) { ABRecordRef record = CFArrayGetValueAtIndex(arrPersons,i); //use kABPersonBirthdayProperty to get b'day NSString *birthDay = (__bridge NSString *)(ABRecordCopyValue(record, kABPersonBirthdayProperty)); NSLog(@“B'day %@”, birthDay); } }