2012-07-23 68 views
2

如何以编程方式向使用AddressBook框架的iPhone联系人添加新组?以编程方式在联系人中创建组

+1

堆栈溢出是针对特定的编程问题,而不是一个地方,有人会写程序给你。 – Dustin 2012-07-23 12:57:14

+1

这有点苛刻没有?它的几行代码不是程序。 – 2012-07-23 13:00:50

+0

感谢大卫你的代码工作完全actaully我是一个新的commer在ios编程这就是为什么我问这种类型的问题。 – Mary 2012-07-24 12:00:16

回答

5

首先来看看,看看它是否存在,如果没有,创建它:

bool foundIt = NO; 
// Protective - did we just not find it, or lose it? 
CFArrayRef groups = ABAddressBookCopyArrayOfAllGroups(addrBook); 
CFIndex numGroups = CFArrayGetCount(groups); 
for(CFIndex idx=0; idx<numGroups; ++idx) { 
    ABRecordRef groupItem = CFArrayGetValueAtIndex(groups, idx); 

    CFStringRef name = (CFStringRef)ABRecordCopyValue(groupItem, kABGroupNameProperty); 
//NSLog(@"Look at group named %@", name); 
    bool isMatch = [newName isEqualToString:(NSString *)name]; 
    CFRelease(name); 

    if(isMatch) { 
     // NSLog(@"FOUND THE GROUP ALREADY!"); 
     groupNum = [NSNumber numberWithInt:ABRecordGetRecordID(groupItem)]; 
     [self setObject:groupNum forKey:kGroupID]; 
     foundIt = YES; 
     break; 
    } 
} 
CFRelease(groups); 

if(!foundIt) { 
    // lets create one 
    ABRecordRef groupItem = ABGroupCreate(); 
    ABRecordSetValue(groupItem, kABGroupNameProperty, (CFStringRef *)newName, &error); 
    if(!error) { 
     ABAddressBookAddRecord (addrBook, groupItem, &error); // bool ret = 
     ABAddressBookSave(addrBook, &error); 

     groupNum = [NSNumber numberWithInt:ABRecordGetRecordID(groupItem)]; 
      //NSLog(@"FIRST groupNumber: %@", groupNum); 
     [self setObject:groupNum forKey:kGroupID]; 
    } 
    CFRelease(groupItem); 
} 
相关问题