2013-12-10 36 views
1

我在嘗試修改聯繫人數據,但我在尋找特定情況。是否可以修改聯繫人數據中的生日條目?如果是這樣,我該怎麼辦?我一直沒能找到它的任何東西......在聯繫人信息中修改生日

回答

0

您可以設置聯繫人的生日如下:

CFDateRef birthdayRef = (__bridge CFDateRef)birthday; // birthday is a NSDate 
ABRecordSetValue(person, kABPersonBirthdayProperty, birthdayRef, error); 

其中personABRecordRef一個實例。

例如,要設置聯繫人的其電子郵件地址,一個名爲targetEmailAddress變量相匹配的生日:

ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL); 
ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) 
{ 
    if (granted) { 
     CFErrorRef *error = NULL; 
     ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error); 
     CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); 
     CFIndex numberOfPeople = ABAddressBookGetPersonCount(addressBook); 

     for(int i = 0; i < numberOfPeople; i++) { 
      ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i); 

      // Find the person with an email address matching targetEmailAddress 
      ABMultiValueRef emailAddresses = ABRecordCopyValue(person, kABPersonEmailProperty); 
      for (CFIndex i = 0; i < ABMultiValueGetCount(emailAddresses); i++) { 
       NSString *emailAddress = (__bridge_transfer NSString *) ABMultiValueCopyValueAtIndex(emailAddresses, i); 

       if ([emailAddress isEqualToString:targetEmailAddress]) {   
        // Set the person's birthday   
        CFDateRef birthdayRef = (__bridge CFDateRef)birthday; // birthday is a NSDate 
        ABRecordSetValue(person, kABPersonBirthdayProperty, birthdayRef, error); 
        ABAddressBookSave(addressBook, error); 

        // Check for error here 
       } 
      } 
     } 
    } 
}); 
1

簡單按照此,

  1. 得到ABRecordRef的物體(比如人)從地址簿
  2. 從地址簿中刪除aRecord
  3. 將(更改)值設置爲aRecord
  4. 添加記錄
  5. 保存地址簿

//創建地址簿的一個實例

ABAddressBookRef allPeople = ABAddressBookCreate(); 

//獲取一個personn的實例,其指數 //找到你的情況下與特定的人

ABRecordRef person = ABAddressBookGetPersonWithRecordID(allPeople, rid); 

//複製personn

ABRecordRef personCopy = person; 
NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"dd.MM"];// your b'date format 
     //don't set year in address book (yyyy=1604) 

NSDate *bdate=[formatter dateFromString:[formatter stringFromDate:@"10.12"]]; // 10.12 is your b'date. 

ABRecordSetValue(personCopy, kABPersonBirthdayProperty,(__bridge CFDateRef)bdate,nil); 


CFErrorRef error; 
BOOL remove = ABAddressBookRemoveRecord (
          allPeople, 
          person, 
          &error); 
if(remove) { 
    BOOL add = ABAddressBookAddRecord (
           allPeople, 
           personCopy, 
           &error); 
    BOOL save = ABAddressBookSave(allPeople, &error); 
} 
+0

謝謝,我會試試這個。 – muttley91