首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用联系人框架(iOS9)获取容器名称

如何使用联系人框架(iOS9)获取容器名称
EN

Stack Overflow用户
提问于 2016-02-10 17:18:05
回答 3查看 893关注 0票数 7

我在一个应用程序中使用联系人框架。我正在尝试做的事情是按照容器对所有联系人进行分类。例如,facebook联系人将显示在"Facebook“标题下,google联系人显示在"Google”下。但当我打印容器的名称时,有时会出现空或空,或者是一些模糊的东西,比如"Address Book“。有没有办法找出哪个容器属于哪个帐户(本地,facebook,谷歌等)。提前谢谢。

代码语言:javascript
复制
    CNContactStore *contactStore = [[CNContactStore alloc]init];
    NSArray *keysToFetch = @[CNContactGivenNameKey,CNContactFamilyNameKey,CNContactIdentifierKey,CNContactMiddleNameKey,CNContactPhoneNumbersKey];
    NSError *error;
    NSArray *containers = [contactStore containersMatchingPredicate:nil error:&error];
    for (CNContainer *container in containers) {
        NSLog(@"Container: %@",container.name);
    }
EN

回答 3

Stack Overflow用户

发布于 2017-07-13 13:14:01

我在这个问题上花了两天时间,但没有得到任何解决方案。

然后用一个补丁就能做到。这对我很有效。

Objective C

代码语言:javascript
复制
if ([container.name isEqualToString:@"Card"]) {
    NSLog(@"iCloud");
} else if ([container.name isEqualToString:@"Address Book"]) {
    NSLog(@"google");
} else if ([container.name isEqualToString:@"Contacts"]) {
    NSLog(@"Yahoo");
} else {
    NSLog(@"Other");
}

Swift 5.3

代码语言:javascript
复制
if container.name == "Card" {
    print("iCloud")
} else if container.name == "Address Book" {
    print("google")
} else if container.name == "Contacts" {
    print("Yahoo")
} else {
    print("Other")
}
票数 3
EN

Stack Overflow用户

发布于 2018-02-04 08:22:12

调试器显示CNContainer有一个名为accountIdentifier的成员,但它似乎始终为null。我想知道它是否与Contacts.app用来获取用作容器标签的帐户名的苹果私有应用程序接口有关。也就是说,出于某种原因,苹果似乎不希望我们拥有这些信息。也许它对Exchange容器更有用,因为在Exchange容器中,容器名称用作组名。

票数 2
EN

Stack Overflow用户

发布于 2017-03-29 05:23:25

初始化数组对我来说很有效:

NSArray *containers = [NSArray分配初始化];

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

https://stackoverflow.com/questions/35311028

复制
相关文章

相似问题

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