我想每个过滤用户输入字符时使用搜索栏搜索联系人地址簿时。这适用于普通字符,但是当输入符号像$或(对于第一个字符,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);
我得到,其中使用filteredContacts创建filteredContactsMutable第二行的EXC_BAD_ACCESS。当调试它,filteredContacts是一个无效CFArrayRef当符号是第一字符。本机由苹果公司创建的PeoplePicker允许你搜索一个符号作为第一个字符,所以我知道这是可能的。
任何输入将不胜感激。
没有任何人有一个想法?它是否可重现? – MDIF