首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone的全部通讯录数据

iPhone的全部通讯录数据
EN

Stack Overflow用户
提问于 2011-12-07 11:14:35
回答 2查看 685关注 0票数 0

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

因此,我想将iphone的整个地址簿数据复制到我的sql db.Please中,并提供相关链接或参考资料。

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

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-07 12:49:03

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

代码语言:javascript
复制
-(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文件。

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2011-12-07 12:01:58

与其将整个地址簿复制到数据库中(同步总是一件痛苦的事情),为什么不将扩展数据与数据库数据引用和地址簿实体一起存储在数据库中?如果这样做,就可以在数据库中引用ABRecordRef id。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8409978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档