2012-03-02 35 views
0

當我在ABAddressBook中搜索聯繫人姓名時,它會返回包含職位名稱的匹配項。在搜索ABAddressBook時,如何在排除職位的同時搜索聯繫人姓名?

例如,假設我有一個名爲John Smith的聯繫人,他是一名技術分析師。

如果我搜索ABAddressBook條目名稱contain[cd]Te,我想避免看到John的名字,因爲Te不是「John Smith」的子字符串。

如何在搜索ABAddressBook的名稱時排除職位?

回答

2

你謂詞來篩選記錄的數組應該是這樣的:

NSPredicate *predicate = [NSPredicate predicateWithFormat: 
     @"record.name contains[cd] %@", string]; 

確保record.name僅包含由

const ABPropertyID kABPersonFirstNameProperty; 
const ABPropertyID kABPersonLastNameProperty; 
const ABPropertyID kABPersonMiddleNameProperty; 

確定的要素,而不是

const ABPropertyID kABPersonJobTitleProperty; 
+0

我知道這已經有一段時間了,但是如何從ABAddressBookCopyArrayOfAllPeople數組獲取記錄?我可以得到的是__NSCFType – 2012-11-29 15:44:10

+0

類似於'ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);' – Mundi 2012-11-29 17:56:55

+1

感謝你。你介意發佈一個片段嗎?我試過這個:NSMutableArray * records =(__bridge NSMutableArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); NSPredicate * myPredicate = [NSPredicate predicateWithFormat:@「record.phoneNumber contains%@」,@「123」]; 嘗試{ [records filterUsingPredicate:myPredicate]; (NSException *例外){ } NSLog(@「%@」,exception); } {} – 2012-11-29 18:11:20