Objective c 如何使用Contacts框架(iOS9)获取容器名称

Objective c 如何使用Contacts框架(iOS9)获取容器名称,objective-c,ios9.1,Objective C,Ios9.1,我正在应用程序中使用联系人框架。我要做的是根据联系人的容器对所有联系人进行分类。e、 g.facebook联系人的标题为“facebook”,谷歌联系人的标题为“谷歌”。但是,当我打印容器的名称时,有时会出现空的、空的或模糊的内容,比如“地址簿”。有没有办法找出哪个容器属于哪个帐户(本地、facebook、google等)。提前谢谢 CNContactStore *contactStore = [[CNContactStore alloc]init]; NSArray *keys

我正在应用程序中使用联系人框架。我要做的是根据联系人的容器对所有联系人进行分类。e、 g.facebook联系人的标题为“facebook”,谷歌联系人的标题为“谷歌”。但是,当我打印容器的名称时,有时会出现空的、空的或模糊的内容,比如“地址簿”。有没有办法找出哪个容器属于哪个帐户(本地、facebook、google等)。提前谢谢

    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);
    }

初始化数组对我很有用:


NSArray*容器=[[NSArray alloc]init]

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

然后用一个补丁就可以了。这是为我工作

目标C

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

if container.name == "Card" {
    print("iCloud")
} else if container.name == "Address Book" {
    print("google")
} else if container.name == "Contacts" {
    print("Yahoo")
} else {
    print("Other")
}

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

有兴趣了解这方面的进展吗?没有,我到目前为止还没有。