iPhone的整个地址簿数据

时间:2011-12-07 03:14:35

标签: iphone ios4 addressbook

我想创建我的自定义地址簿,如iphone的地址簿,我将根据自己的需要更改某些字段。

所以我想将iphone的整个地址簿数据复制到我的sql db中。请为我提供任何链接或参考。

需要知道存储地址簿数据的db操作

谢谢

2 个答案:

答案 0 :(得分:2)

为什么不将扩展数据存储在带有数据库数据引用和地址簿实体的数据库中,而不是将整个地址簿复制到数据库中(同步总是很麻烦)?如果这样做,您可以在数据库中引用ABRecordRef id。

答案 1 :(得分:1)

您可以通过此过程在NSMutable数组中加载地址簿条目,然后您可以在应用程序中执行任何操作:

-(NSMutableArray*)loadContactsFromAddressBook{

NSMutableArray * contacts = [[NSMutableArray alloc] init];
ABAddressBookRef addressBook = ABAddressBookCreate( );
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople( addressBook );
CFIndex nPeople = ABAddressBookGetPersonCount( addressBook );

for ( int i = 0; i < nPeople; i++ )
{

    ABRecordRef ref = CFArrayGetValueAtIndex( allPeople, i );

    NSString    *fname = (NSString*)ABRecordCopyValue(ref, kABPersonFirstNameProperty);        
    NSString    *lname = (NSString*)ABRecordCopyValue(ref, kABPersonLastNameProperty); 

    NSString    *name;
    NSString* phoneNumber;

    if (lname) {
        name = [fname stringByAppendingFormat: @" %@", lname];
    } else {
        name = fname;
    }

    ABMultiValueRef   phoneNumbers = ABRecordCopyValue(ref, kABPersonPhoneProperty);
    int count = ABMultiValueGetCount(phoneNumbers);

    if (count > 0 && name) {

        phoneNumber = (NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);

        [contacts addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:name, @"member_name",
                             phoneNumber, @"phone",
                             @"NO", @"invited",
                             nil] ] ;
    }

    NSSortDescriptor *aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"member_name" ascending:YES];
    [contacts sortUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]];
}
return [contacts autorelease];
}

您需要将AddressBook.framework和AddressBookUI.framework框架添加到项目中,并在使用此方法的类中导入AddressBook / AddressBook.h文件。

希望这有帮助。