这是我的代码,用来获取设备的联系人并保存到MutableArray。
但我需要为所有联系人单独获取recordID,并保存到同一个数组中以供进一步使用。(例如,使用recordId删除联系人)。
请帮帮我,我被困在那里四天了。
[contactStore enumerateContactsWithFetchRequest:request error:nil usingBlock:^(CNContact* __nonnull contact, BOOL* __nonnull stop){
if( contact.phoneNumbers)
phoneNumber = [[[contact.phoneNumbers firstObject] value]];
if( contact.emailAddresses)
emailAddress = [[contact.emailAddresses firstObject] value];
contactValue=[[NSMutableDictionary alloc] init];
[contactValue setValue:phoneNumber ?:@"" forKey:@"phoneNumber"];
[contactValue setValue:emailAddress ?:@"" forKey:@"emailAddress"];
[contactValue setObject:contact.identifier forKey:@"phoneIdentifier"];
[contactValue setObject:contact.givenName ?:@"" forKey:@"firstName"];
[contactValue setObject:contact.familyName ?:@"" forKey:@"lastName"];
[_totalContact addObject:contactValue];
}]发布于 2016-11-15 14:13:41
从你的问题陈述中,我理解的是,你想要delete,一个联系方式,从联系书的基础上的联系方式的identifier。当您拥有identifier时,您所需要做的就是:
- (void)deleteContactWithIdentifier:(NSString *)identifier {
NSArray *keys = @[CNContactGivenNameKey,
CNContactPhoneNumbersKey,
CNContactEmailAddressesKey,
CNContactIdentifierKey];
CNMutableContact *contact = [[store unifiedContactWithIdentifier:identifier keysToFetch:keys error:nil] mutableCopy];
NSError *error;
CNSaveRequest *saveRequest = [[CNSaveRequest alloc] init];
[saveRequest deleteContact:contact];
[store executeSaveRequest:saveRequest error:&error];
}发布于 2017-07-04 07:04:25
如果您真的需要阅读recordID (对于旧的API),请使用这个简单的扩展。
recordID总是拿来。
这段代码永远不会提交到App。它使用私有API!
CNContact+PrivateExtension.h:
NS_ASSUME_NONNULL_BEGIN
@interface CNContact (PrivateExtension)
@property (readonly) NSNumber *privateRecordID;
@end
NS_ASSUME_NONNULL_ENDCNContact+PrivateExtension.m:
@implementation CNContact (PrivateExtension)
- (NSNumber *)privateRecordID
{
return [self valueForKey:@"recordID"];
}
@endhttps://stackoverflow.com/questions/40585659
复制相似问题