无论我尝试什么,iOS告诉我我有0组。我已经尝试过ABGroup和CNGroup API。纳达。如果我进入iPad上的“联系人”应用程序并单击“组”,我会看到它列出了五个不同的组(如预期的那样)。但是[CNContactStore groupsMatchingPredicate:error:]和ABAddressBookCopyArrayOfAllGroups()都给了我0个元素数组。
以下是我的每个代码:
CNContactStore *store = [[CNContactStore alloc] init];
[store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted == YES) {
NSError *error;
NSArray *cnGroups = [store groupsMatchingPredicate:nil error:&error];
for( CNGroup *group in cnGroups ) {
AWLogInfo(@"JMS CN Group: %@", group.name);
}
}
}];
CFArrayRef allGroups = ABAddressBookCopyArrayOfAllGroups(addressBook);
for( int iGroup = 0; iGroup < CFArrayGetCount(allGroups); iGroup++ ) {
ABRecordRef groupRef = CFArrayGetValueAtIndex(allGroups, iGroup);
NSString *groupName = (__bridge_transfer NSString*)ABRecordCopyValue(groupRef, kABGroupNameProperty);
AWLogInfo(@"JMS Group %ld: %@", (long) iGroup, groupName);
}
(请注意,我没有请求AddressBook权限,因为我的应用已经在其他地方完成了。我能够很好地访问联系人 - 实际上,在此代码段之后迭代所有联系人记录的代码,没问题。)
是什么给出的?我错过了什么?
编辑:请注意,我可以看到创建的群组,但我无法看到其他应用创建的群组。我可以看到这些群组中的联系人,但不能看到群组本身。这是预期的行为吗?
答案 0 :(得分:0)
我让群体与来源混淆。如果您列出所有来源,您将获得其他应用创建的内容。
也就是说,iOS似乎很难为你提供一个有用的源名称,所以这仍然没有真正做到我想要的。