2017-10-08 135 views
0

我使用联系人组创建了一个组,然后我想向该组添加联系人。使用联系人框架将联系人添加到组

 NSPredicate *predicate = [CNGroup predicateForGroupsWithIdentifiers:@[[[NSUserDefaults standardUserDefaults]objectForKey:@"groupIDentifier"]]]; 
     NSArray *groups = [store groupsMatchingPredicate:predicate error:&saveError]; 

     CNMutableContact *contact = [[CNMutableContact alloc] init]; 
     contact.familyName = @"Doe"; 
     contact.givenName = @"John"; 

     CNLabeledValue *homePhone = [CNLabeledValue labeledValueWithLabel:CNLabelHome value:[CNPhoneNumber phoneNumberWithStringValue:@"312-555-1212"]]; 
     contact.phoneNumbers = @[homePhone]; 

     CNSaveRequest *request = [CNSaveRequest new]; 
     CNGroup *group = [groups firstObject]; 
     [request addContact:contact toContainerWithIdentifier:group.identifier]; 

     if (![store executeSaveRequest:request error:&saveError]) { 
      NSLog(@"error = %@", saveError); 
     } 

错误是:

误差=错误域= CNErrorDomain代码= 200 “更新的记录不 存在” 的UserInfo = {CNInvalidRecordIdentifiers =( “45FFBB0D-C74B-4A14-8293- 9099EA7DEF81:ABGroup”),NSLocalizedDescription =更新的记录不存在, NSLocalizedFailureReason =该保存请求失败,因为它更新一个 记录不存在或已被删除}

。 210

我也尝试使用:

[request addMember:contact toGroup:[groups firstObject]]; 

这种情况下,错误是:

error = Error Domain=CNErrorDomain Code=200 "Updated Record Does Not Exist" UserInfo={CNInvalidRecords=(
    "<CNContact: 0x7f8ce97aa640: identifier=7CC6BC1D-1B23-48DA-8282-06115F542A97:ABPerson, givenName=John, familyName=Doe, organizationName=, phoneNumbers=(\n \"<CNLabeledValue: 0x600001873cc0: identifier=68277209-3AE4-40AF-9EEA-DF0E1D01883C, label=_$!<Home>!$_, value=<CNPhoneNumber: 0x600000433300: stringValue=312-555-1212, initialCountryCode=(null)>>\"\n), emailAddresses=(\n), postalAddresses=(\n)>"), NSLocalizedFailureReason=The save request failed because it updates a record that does not exist or has already been deleted., NSLocalizedDescription=Updated Record Does Not Exist} 

回答

2

我发现疯狂的事情是:我需要通话双方使用addMember和的addContact,实际上使联系人添加到组。

CNGroup *group = [groups firstObject]; 
    [request addMember:contact toGroup:group]; 
    [request addContact:contact toContainerWithIdentifier:nil]; 

if (![store executeSaveRequest:request error:&saveError]) { 
     NSLog(@"error = %@", saveError); 
    } 

这实际上是为了达到目的,但我不知道为什么我必须实际做出两种类型的请求。

相关问题