1
我在嘗試修改聯繫人數據,但我在尋找特定情況。是否可以修改聯繫人數據中的生日條目?如果是這樣,我該怎麼辦?我一直沒能找到它的任何東西......在聯繫人信息中修改生日
我在嘗試修改聯繫人數據,但我在尋找特定情況。是否可以修改聯繫人數據中的生日條目?如果是這樣,我該怎麼辦?我一直沒能找到它的任何東西......在聯繫人信息中修改生日
您可以設置聯繫人的生日如下:
CFDateRef birthdayRef = (__bridge CFDateRef)birthday; // birthday is a NSDate
ABRecordSetValue(person, kABPersonBirthdayProperty, birthdayRef, error);
其中person
是ABRecordRef
一個實例。
例如,要設置聯繫人的其電子郵件地址,一個名爲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
}
}
}
}
});
簡單按照此,
//創建地址簿的一個實例
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);
}
謝謝,我會試試這個。 – muttley91