2012-03-17 1 views
1

Я пытаюсь понять, как вы можете добавить день рождения к ABRecordRef без года (т. Е. 5 мая, а не 5 мая 1985 года). Это возможно?Сохранить kABPersonBirthdayProperty в адресной книге без года?

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"MM/dd/yyyy"]; 
NSDate *date = [df dateFromString:[result valueForKey:@"birthday"]]; 

if(date == nil) 
{ 
     df = [[NSDateFormatter alloc] init]; 
     [df setDateFormat:@"MM/dd"]; 
     date = [df dateFromString:[result valueForKey:@"birthday"]]; 
} 

ABRecordSetValue(person, kABPersonBirthdayProperty, (__bridge CFDateRef)date, nil); 

Если нет года прилагается к строке даты он по умолчанию 1970, но я хочу, чтобы положить его без года в адресной книге, если это вообще возможно.

Кто-нибудь знает?

ответ

0

Боюсь, что это невозможно. Просто используйте текущий год или контрольную дату unix, так что у вас будет как минимум день и месяц.

3

Вы можете установить дату рождения для контакта (через приложение «Контакты») всего за месяц/день. Тогда год устанавливается на 1604, это просто не показано. Если до вашего ABRecordSetValue() вы установите год на 1604, дата рождения будет отображаться как только «5 мая» при просмотре контакта в приложении «Контакты». Похоже, что именно так Apple указывает «нет года». Вам придется вручную проверять дату позже, если вы планируете показывать ее, иначе вы будете показывать 1604 год.

1

Вы можете сделать это, установив год рождения на 1604, и это будет работать только с григорианским календарем.

См. this question and answer для получения дополнительной информации.