使用'AddressBook.framework'可以过滤掉所有公司(即只有人)。例如,如何修改以下代码以删除公司:
ABAddressBookRef addressbook = ABAddressBookCreate();
CFArrayRef contacts = ABAddressBookCopyArrayOfAllPeople(addressbook);
我发现公司似乎没有存储为组(他们仍然通过上述调用返回)。谢谢!
答案 0 :(得分:4)
你是对的,公司是地址簿中的记录/人。
查找kABPersonFlags
的值 - 其中一个标志是“显示为公司”。然后做一个位掩码并进行比较。
if (([aPerson valueForProperty:kABPersonFlags] & kABShowAsMask) == kABShowAsCompany) {
// it's a company
} else {
// it's a person, resource, or room
}
我使用了Apple的以下参考资料,你可能也应该阅读:
编辑:抱歉,以上内容适用于Mac OS X上的地址簿。请尝试使用iOS:
ABRecordRef aRecord = ... // Assume this exists
CFNumberRef recordType = ABRecordCopyValue(aRecord, kABPersonKindProperty);
if (recordType == kABPersonKindOrganization) {
// it's a company
} else {
// it's a person, resource, or room
}
这个想法是一样的:获取人物类型属性的值,并查看它告诉你的内容。
使用这些Apple文档: