代码之家  ›  专栏  ›  技术社区  ›  Kevin Sylvestre

从通讯簿引用筛选公司

  •  1
  • Kevin Sylvestre  · 技术社区  · 14 年前

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

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

    我发现,公司似乎并不是以组的形式存储的(它们仍然是通过上述调用返回的)。谢谢!

    1 回复  |  直到 14 年前
        1
  •  4
  •   Alex Martini    14 年前

    你说得对,公司是地址簿上的记录/人。

    查找 kABPersonFlags --其中一面旗帜是“作为公司展示”。然后做一个比特掩码并进行比较。

    if (([aPerson valueForProperty:kABPersonFlags] & kABShowAsMask) == kABShowAsCompany) {
       // it's a company
    } else {
       // it's a person, resource, or room
    }
    

    我使用了苹果公司的以下参考资料,您可能也应该阅读这些资料:


    编辑:抱歉,以上是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
    }
    

    使用这些苹果文档: