首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从RecordID ios中获取CNContactStore

如何从RecordID ios中获取CNContactStore
EN

Stack Overflow用户
提问于 2016-11-14 09:39:50
回答 2查看 972关注 0票数 4

这是我的代码,用来获取设备的联系人并保存到MutableArray

但我需要为所有联系人单独获取recordID,并保存到同一个数组中以供进一步使用。(例如,使用recordId删除联系人)。

请帮帮我,我被困在那里四天了。

代码语言:javascript
复制
[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];
      }]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-15 14:13:41

从你的问题陈述中,我理解的是,你想要delete,一个联系方式,从联系书的基础上的联系方式的identifier。当您拥有identifier时,您所需要做的就是:

代码语言:javascript
复制
- (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];
}
票数 4
EN

Stack Overflow用户

发布于 2017-07-04 07:04:25

如果您真的需要阅读recordID (对于旧的API),请使用这个简单的扩展。

recordID总是拿来。

这段代码永远不会提交到App。它使用私有API!

CNContact+PrivateExtension.h

代码语言:javascript
复制
NS_ASSUME_NONNULL_BEGIN

@interface CNContact (PrivateExtension)

@property (readonly) NSNumber *privateRecordID;

@end

NS_ASSUME_NONNULL_END

CNContact+PrivateExtension.m

代码语言:javascript
复制
@implementation CNContact (PrivateExtension)

- (NSNumber *)privateRecordID
{
    return [self valueForKey:@"recordID"];
}

@end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40585659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档