2011-07-29 7 views
0

ユーザーのiPhoneのアドレス帳への参照を取得し、文字 'A'で始まらないすべての連絡先を除外し、そのフィルタリングされたアドレス帳を表示する方法はありますか?これはUITableViewで可能ですが、すべてのアドレス帳機能に付属の特別なビューがありますか?名前が「A」で始まるアドレス帳ビューを表示していますか?

+0

aはいくつかの回答で例示されています – bshirley

答えて

2

姓Aで始まる、あなたのようなもの使用するすべての人々の配列を取得するには:あなたは配列を取得したら、あなたはあなたが必要な任意のカスタムビューでそれを使用することができます

ABAddressBook *ab = [ABAddressBook sharedAddressBook]; 
ABSearchElement *startsWithA =[ABPerson searchElementForProperty:kABLastNameProperty 
           label:nil key:nil 
           value:@"A" 
           comparison:kABPrefixMatchCaseInsensitive]; 
NSArray *peopleFound = 
    [ab recordsMatchingSearchElement:startsWithA]; 

を。

+0

これはOS Xのみです。 iOSにはABAddressBookクラスがありません – zxcat

0

このコードはfilteredPeopleあなたはこの答えは同様にあなたを助けるべきであるA.

で始まる名前を持つすべてのアドレス帳の連絡先を移入するテーブルビューのデータソースであることを前提としていますBlank field showing up on iPhone AddressBook, how to debug?

をまた、Appleは「直接の相互作用:プログラムデータベースへのアクセス」に関する広範な内容を持っているhttp://developer.apple.com/library/ios/#documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Chapters/DirectInteraction.html%23//apple_ref/doc/uid/TP40007744-CH6-SW1

 ABAddressBookRef addressBook = ABAddressBookCreate(); 
    CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook); 
    CFMutableArrayRef peopleMutable = CFArrayCreateMutableCopy(
                   kCFAllocatorDefault, 
                   CFArrayGetCount(people), 
                   people 
                   ); 
    NSMutableArray *allNames = (NSMutableArray*)peopleMutable; 



    filteredPeople = [[NSMutableArray alloc] init ]; 

    for (id person in allNames) { 
     NSMutableString *firstName = [(NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty) autorelease]; 

     if ([firstName length] > 0){ 
      NSString* firstChar = [firstName substringToIndex:1]; 

      if ([firstChar isEqualToString:@"A"] || [firstChar isEqualToString:@"a"]){ 

       [filteredPeople addObject:person]; 
      } 
     } 
    } 

    [self.theTableView reloadData]; 



    CFRelease(addressBook); 
    CFRelease(people); 
    CFRelease(peopleMutable); 
いいえ、あなたがアクセスできるいかなるUI、DATへcruftyプログラムによるアクセスはありません
関連する問題