2012-03-02 5 views
0

連絡先の名前をABAddressBookで検索すると、職種を含む一致が返されます。ABAddressBookを検索する際に、役職を除外して連絡先の名前を検索するにはどうすればよいですか?

たとえば、John Smithという名前の連絡先があり、技術アナリストだとしましょう。

contain[cd]Teの名前のABAddressBookエントリを検索すると、Teが「John Smith」の部分文字列ではないため、Johnの名前が表示されないようにしたいと考えています。

ABAddressBookに職種を除外して名前を検索するにはどうすればよいですか?

レコードの配列をフィルタリングするというあなたの述語は、このようなものでなければなりません

答えて

2

record.nameのみ

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

なく

const ABPropertyID kABPersonJobTitleProperty; 
+0

で識別される要素が含まれていることを確認してください

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

しばらく経っていますが、ABAddressBookCopyArrayOfAllPeople配列からレコードを取得するにはどうすればよいですか?私が得ることができるのは__NSCFTypeです。 –

+0

「ABRecordRef ref = CFArrayGetValueAtIndex(allPeople、i);」のようなもの – Mundi

+1

ありがとうございます。スニペットを投稿してもよろしいですか?私はこれを試しました:NSMutableArray * records =(__bridge NSMutableArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); NSPredicate * [NSPredicate predicateWithFormat:@ "record.phoneNumberには%@"、@ "123"]が含まれています。 try { [records filterUsingPredicate:myPredicate]; } catch(NSException * exception){ NSLog(@ "%@"、例外); } {} –