2012-05-08 7 views
1

ユーザーが文字を入力するたびに検索バーを使用して連絡先をフィルタリングしようとしています。これは通常の文字では問題ありませんが、シンボルが$や(最初の文字の場合はABAddressBookCopyPeopleWithNameは "Invalid CFArrayRef"を返します。コードは以下の通りです。iPhone - Xcode - アドレス帳でシンボルを検索するときに無効なCFArrayRef

CFArrayRef filteredContacts = ABAddressBookCopyPeopleWithName(addressBook, (CFStringRef)searchText); 
    CFMutableArrayRef filteredContactsMutable = CFArrayCreateMutableCopy(kCFAllocatorDefault, CFArrayGetCount(filteredContacts), filteredContacts); 
    CFArraySortValues(filteredContactsMutable, CFRangeMake(0, CFArrayGetCount(filteredContactsMutable)), (CFComparatorFunction)ABPersonComparePeopleByName, (void*)sortOrdering); 
    contacts = (NSArray *)filteredContactsMutable; 
    CFRelease(filteredContacts); 

私はそれをデバッグするとき、私は。filteredContactsMutableがfilteredContactsを使用して作成された2行目EXC_BAD_ACCESSを取得し、filteredContactsはシンボルが最初文字のとき無効CFArrayRefです。ネイティブAppleが作成したPeoplePickerでは、最初の文字としてシンボルを検索できるので、可能です。

すべての入力をいただければ幸いです。

+0

誰かアイデアはありますか?それは再現可能ですか? – MDIF

答えて

0

最初に検索を開始するときに、あまりにも多くのOSコールをトリガーしないでください。すべてのデータを一度読み込んで配列に格納してから検索します。なぜそれがnilの引数のためにそれをクラッシュさせる理由は、そのようなユーザー名を見つけることはありません。単純なcharectrsで試してみてください。このprblmがまだ存在するかどうか教えてください。

+0

最初の文字としてQを入力すると、文字Qとの接触がないにもかかわらず、クラッシュしません。私のtableViewは、期待通りにクリアされます。それは、それが思われるシンボルでのみ起こります。 – MDIF

関連する問題