从地址簿参考过滤公司

时间:2010-10-20 20:28:24

标签: iphone cocoa-touch

使用'AddressBook.framework'可以过滤掉所有公司(即只有人)。例如,如何修改以下代码以删除公司:

ABAddressBookRef addressbook = ABAddressBookCreate();
CFArrayRef contacts = ABAddressBookCopyArrayOfAllPeople(addressbook);

我发现公司似乎没有存储为组(他们仍然通过上述调用返回)。谢谢!

1 个答案:

答案 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文档: