Не удается получить дату рождения из адресной книги и показать в ячейке табличного представления в iphone - PullRequest
1 голос
/ 21 марта 2012

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

// in viewDidLoad
 birthdateString = [ContactDetails getBirthDate:record];


 +(NSString*)getBirthDate:(ABRecordRef)record{

    NSString *birthdateString=[(NSDate*)ABRecordCopyValue(record, kABPersonBirthdayProperty) description];
    NSArray *array=[birthdateString componentsSeparatedByString:@" "];

    birthdateString=[array objectAtIndex:0] ;
    NSLog(@"birthDay: %@",birthdateString);
    return birthdateString;
}

// in cellForRowAtIndexPath
cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CELL_ID] autorelease];
cell.detailTextLabel.text=birthdateString;

Журнал консоли, когда NSZombieEnabled

*** -[CFString isEqualToString:]: message sent to deallocated instance 0x6eb5520

Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Это не полный код, так что не могу сказать, но проверяйте нулевое значение во время отладки.Есть некоторая строка NSString, которая не получает выделение памяти.Только что получил ответ

// in cellForRowAtIndexPath
cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2          reuseIdentifier:CELL_ID] autorelease];
  NSString *brithdateString=[self getBrithDate:record];
cell.detailTextLabel.text=birthdateString;

Вы используете brithdateString, который был локальным и освобождался после вызова метода getBrithDate

0 голосов
/ 21 марта 2012

попробуйте

CFDateRef birthDate = ABRecordCopyValue(record, kABPersonBirthdayProperty);
NSDateFormatter *dateFormatter = nil;
if(birthDate)
{
   if (dateFormatter == nil) {
   dateFormatter = [[NSDateFormatter alloc] init];
   [dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
   [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
} 
NSString* birthDay = [dateFormatter stringFromDate:(NSDate*)birthDate ];
NSLog(@"birthDay: %@",birthDay);
if (dateFormatter != nil)
[dateFormatter release];
CFRelease(birthDate);
...