使用联系人框架将联系人添加到群组
add a contact to a group using Contacts framework
我使用联系人组创建了一个组,然后我想向该组添加一个联系人。
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);
}
错误是:
error = Error Domain=CNErrorDomain Code=200 "Updated Record Does Not
Exist" UserInfo={CNInvalidRecordIdentifiers=(
"45FFBB0D-C74B-4A14-8293-9099EA7DEF81:ABGroup" ), NSLocalizedDescription=Updated Record Does Not Exist,
NSLocalizedFailureReason=The save request failed because it updates a
record that does not exist or has already been deleted.}
我也试过使用:
[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}
我发现的最疯狂的事情是:我需要同时调用 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);
}
Apple 支持的回复:
您必须分别保存联系人和群组。然后检查它们是否存在,然后才能将联系人添加到该组。否则,您将收到与输出中相同的错误。
- 创建群组
- 执行联系人保存
- 检查联系人和群组是否都存在
- 使用 addMember 将联系人添加到群组
这确实达到了目的,但我不知道为什么我必须实际提出两种类型的请求。
我使用联系人组创建了一个组,然后我想向该组添加一个联系人。
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);
}
错误是:
error = Error Domain=CNErrorDomain Code=200 "Updated Record Does Not Exist" UserInfo={CNInvalidRecordIdentifiers=( "45FFBB0D-C74B-4A14-8293-9099EA7DEF81:ABGroup" ), NSLocalizedDescription=Updated Record Does Not Exist, NSLocalizedFailureReason=The save request failed because it updates a record that does not exist or has already been deleted.}
我也试过使用:
[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}
我发现的最疯狂的事情是:我需要同时调用 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);
}
Apple 支持的回复:
您必须分别保存联系人和群组。然后检查它们是否存在,然后才能将联系人添加到该组。否则,您将收到与输出中相同的错误。
- 创建群组
- 执行联系人保存
- 检查联系人和群组是否都存在
- 使用 addMember 将联系人添加到群组
这确实达到了目的,但我不知道为什么我必须实际提出两种类型的请求。