如何在iphone中检查群组的存在(群组是否可用)?

时间:2011-03-22 06:28:33

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

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

任何人都可以告诉我如何检查群体的存在???

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

// 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);

}

1 个答案:

答案 0 :(得分:1)

来自Apple文档:

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

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

了解更多plz read apple文档。

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