2010-10-20 26 views
1

使用'AddressBook.framework'可以過濾掉所有公司(即只有人)。例如,如何將一個修改下面的代碼刪除公司:從地址簿參考中篩選公司

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

我發現,公司似乎沒有被存儲爲組(他們仍與上述調用返回)。謝謝!

回答

4

你是對的,公司是地址簿中的記錄/人員。

查找kABPersonFlags的值 - 其中一個標誌是「show as company」。然後只是做一個掩碼和比較。

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 
} 

的想法是一樣的:獲得人類型屬性的值,看看它會告訴你。

使用這些蘋果文檔:

+0

真棒!感謝亞歷克斯這正是我正在尋找的! – 2010-10-20 21:42:05