iPhone的全部地址簿数据

我想创建我的自定义地址簿,就像iphone的地址簿一样,我会根据自己的需要更改一些字段。

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

需要知道数据库操作来存储地址簿数据

谢谢


你可以通过这个过程加载一个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文件。

希望这可以帮助。


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

链接地址: http://www.djcxy.com/p/51791.html

上一篇: iPhone's entire addressbook data

下一篇: External Data with CompletionHandler not working