2011-02-04 76 views
0

我想從我的iphone上的ABAddressBook獲取生日特性。我已經瀏覽了一些關於網絡的討論,並且主要推薦了相同的答案,我已經嘗試過如下的答案。但這仍然不適用於我,所以我不知道我是否錯過了其他東西....ABAddressBook獲取生日財產

 dayFormatter = [[[NSDateFormatter alloc] init]autorelease]; 
    [self.dayFormatter setDateFormat:@"MMMM d"];   

    NSString* today = [dayFormatter stringFromDate:[NSDate date]]; 
    NSLog(@"today:%@", today); 
    NSLog(@"date:%@", [NSDate date]); // this works fine 


    NSDate *bday = (NSDate*)ABRecordCopyValue(personRecord,kABPersonBirthdayProperty); 
    NSLog(@"bdayyyy:%@", bday); // this doesn't work. 


    NSString* personBday = [dayFormatter stringFromDate:bday]; 
    NSLog(@"Bday:%@", personBday); 

任何幫助非常感謝..謝謝。

+0

你能成爲什麼意思「它不工作」更具體一點?是否有編譯錯誤,運行時錯誤?什麼是輸出?你已經嘗試了什麼? – Axel 2011-02-04 07:55:26

回答

0

這個工作對我來說:

NSDate* birthDate = (__bridge_transfer NSDate*)ABRecordCopyValue(addressBookContact, kABPersonBirthdayProperty); 
0

試試這個:

ABAddressBookRef myAddressBook = ABAddressBookCreate(); 
NSArray *allPeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(myAddressBook); 

for (id record in allPeople) { 
    NSMutableDictionary *newRecord = [[NSMutableDictionary alloc] init]; 
    CFTypeRef bDayProperty = ABRecordCopyValue((ABRecordRef)record, kABPersonBirthdayProperty); 

    if (ABRecordCopyValue((ABRecordRef)record, kABPersonBirthdayProperty)) 
     { 
     NSDate *date=(NSDate*)bDayProperty; 
     [newRecord setObject:date forKey:@"birthDate"]; 
     date=nil; 
     [date release]; 
    } 
    CFRelease(myAddressBook); 
    }