2017-10-08 30 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); 
    } 

これは実際に目的を果たしますが、私は実際には2つのタイプの要求をしなければならない、なぜ私は見当がつかない。