【问题标题】:How can i check the group's existence (whether group is available or not) in iphone ?如何在 iphone 中检查组的存在(组是否可用)?
【发布时间】:2024-01-17 18:49:01
【问题描述】:

我正在通过我的应用程序在 iphone 组中添加联系人。还有其他逻辑吗??

谁能告诉我如何检查组的存在???

我正在使用以下代码来检查组的存在,但可能是因为我的应用程序在 iphone 中崩溃的循环。

//ab=AddressBook 对象

CFArrayRef a = ABAddressBookCopyArrayOfAllGroups(ab);

for (CFIndex i = CFArrayGetCount(a)-1; i >= 0; i--)

{

    ABRecordRef     g = (ABRecordRef) CFArrayGetValueAtIndex(a, i);



    CFStringRef     s = (CFStringRef) ABRecordCopyValue(g, kABGroupNameProperty);

    CFComparisonResult  r = CFStringCompare((CFStringRef)name, s, 0);

    CFRelease(s);



    if (r == kCFCompareEqualTo)

    {

        group = CFRetain(g);

        break;

    }

}

CFRelease(a);



CFErrorRef err = nil;

if (!group)

{

    group = ABGroupCreate();

    ABRecordSetValue(group, kABGroupNameProperty, name, &err);

    if (!err)

    {

        ABAddressBookAddRecord(ab, group, &err);

    }

    if (!err)

    {

        ABAddressBookSave(ab, &err);

    }

}

if (err)

{

    CFRelease(err);

}

【问题讨论】:

    标签: iphone objective-c cocoa-touch ios4 iphone-sdk-3.0


    【解决方案1】:

    来自 Apple 文档:

    您可以使用函数ABAddressBookGetGroupWithRecordID 按记录标识符查找特定组。您还可以使用ABAddressBookCopyArrayOfAllGroups 检索通讯簿中所有组的数组,并使用函数ABAddressBookGetGroupCount 计算通讯簿中有多少组。

    您可以通过编程方式修改组的成员。要将一个人添加到组中,请使用函数ABGroupAddMember;要从组中删除一个人,请使用函数ABGroupRemoveMember。在可以将人员记录添加到组之前,它必须已经在地址簿数据库中。如果需要同时向群组和数据库添加新的人员记录,必须先将其添加到通讯录数据库,保存数据库,然后再将人员记录添加到群组。**

    更多请阅读苹果文档。

    http://developer.apple.com/library/ios/#documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Chapters/DirectInteraction.html#//apple_ref/doc/uid/TP40007744-CH6-SW1

    【讨论】: