2016-04-18 10 views
0

こんにちは私は私の連絡先をフィルタリングしようとしていますが、すべてシミュレータのxcodeでうまくいますが、私のiPhoneで試してみると正規表現の述語に問題があります。助言がありますか ?。どうもありがとうございました。NSPredicate with CNContact not working

func updateSearchResultsForSearchController(searchController: UISearchController) { 

    self.filteredContacs.removeAll(keepCapacity: false) 
     let searchPredcate = NSPredicate(format: "givenName contains[c] %@ OR familyName contains[c] %@",searchController.searchBar.text!) 
    let array = (self.contacts as NSArray).filteredArrayUsingPredicate(searchPredcate) 
    self.filteredContacs = array as! [CNContact] 

    self.tableViewContacts.reloadData() 

} 

答えて

0

CNContactの述語を使用できます。

- (NSArray*)searchContactsMatchingName:(NSString*)pSearchName andKeysToFetch:(NSArray*)pKeysToFetch 
{ 
    NSError *pError = nil; 
    NSPredicate *pPredicate = [CNContact predicateForContactsMatchingName:pSearchName]; 
    CNContactStore *pStore  = [[CNContactStore alloc] init]; 
    NSArray *pResults   = [pStore unifiedContactsMatchingPredicate:pPredicate keysToFetch:pKeysToFetch error:&pError]; 

    return pResults; 
}