首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回或创建ABRecord的IPhone AddressBook方法

返回或创建ABRecord的IPhone AddressBook方法
EN

Stack Overflow用户
提问于 2012-02-20 20:30:51
回答 1查看 647关注 0票数 0

我在AddressBook和内存方面遇到了真正的问题。我希望它返回一个可以保存联系人的记录(现有记录或新记录)。根据构建和分析工具,这个函数有很多错误。我已经阅读了文档并重写了很多次,但我似乎不能正确地理解它。

写这个方法的正确方法是什么?/我做错了什么?

代码语言:javascript
复制
//Searches Groups by name for matches and returns the attached record
- (ABRecordRef)getGroup
{   
    ABRecordRef response;

NSArray *groups = (NSArray*)ABAddressBookCopyArrayOfAllGroups(addressBook);

for (id group in groups)
{
    NSString *currentGroup = (NSString*)ABRecordCopyValue(group, kABGroupNameProperty);
    if ([currentGroup isEqualToString:GroupName])
    {
        response = group;
        CFRelease(currentGroup); //??
        break;
    }
    CFRelease(currentGroup); //?
}

[groups release];

if (response == NULL)
{
    response = ABGroupCreate();
    ABRecordSetValue(response, kABGroupNameProperty, GroupName, &error);
    ABAddressBookAddRecord(addressBook, response, &error);
    ABAddressBookSave(addressBook, &error);
}
return response;

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-21 00:00:03

只获取记录ID会更简单、更可靠。如果在一个无关的post - https://stackoverflow.com/a/8249975/874927上找到这个

代码语言:javascript
复制
- (BOOL)checkIfGroupExists
{   
    BOOL hasGroup = NO;

    CFIndex groupCount = ABAddressBookGetGroupCount(addressBook);
    CFArrayRef groups = ABAddressBookCopyArrayOfAllGroups(addressBook);

    for (int i = 0; i < groupCount; i++)
    {
        ABRecordRef currentGroup = CFArrayGetValueAtIndex(groups, i);
        NSString *currentGroupName = (NSString*)ABRecordCopyCompositeName(currentGroup);

        if ([currentGroupName isEqualToString:GroupName])
        {
            hasGroup = YES;
            groupRecordId = ABRecordGetRecordID(currentGroup);
        }
        CFRelease(currentGroupName);
    }

    if (hasGroup == NO)
    {
        [self createNewGroup];
    }

    CFRelease(groups);
    return hasGroup;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9361150

复制
相关文章

相似问题

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