我在一个应用程序中使用联系人框架。我正在尝试做的事情是按照容器对所有联系人进行分类。例如,facebook联系人将显示在"Facebook“标题下,google联系人显示在"Google”下。但当我打印容器的名称时,有时会出现空或空,或者是一些模糊的东西,比如"Address Book“。有没有办法找出哪个容器属于哪个帐户(本地,facebook,谷歌等)。提前谢谢。
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);
}发布于 2017-07-13 13:14:01
我在这个问题上花了两天时间,但没有得到任何解决方案。
然后用一个补丁就能做到。这对我很有效。
Objective 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")
}发布于 2018-02-04 08:22:12
调试器显示CNContainer有一个名为accountIdentifier的成员,但它似乎始终为null。我想知道它是否与Contacts.app用来获取用作容器标签的帐户名的苹果私有应用程序接口有关。也就是说,出于某种原因,苹果似乎不希望我们拥有这些信息。也许它对Exchange容器更有用,因为在Exchange容器中,容器名称用作组名。
发布于 2017-03-29 05:23:25
初始化数组对我来说很有效:
NSArray *containers = [NSArray分配初始化];
https://stackoverflow.com/questions/35311028
复制相似问题