2011-12-07 16 views
0

自分のニーズに合わせていくつかのフィールドを変更するiphoneのアドレス帳のようなカスタムアドレス帳を作成したいと思います。iPhoneのアドレス帳の全データ

私はiphoneのアドレス帳のデータを自分のSQLデータベースにコピーしたいと思います。

であなたの拡張データを格納しない理由は、アドレス帳データに

おかげ

+1

公式のiOSドキュメントはどうですか:http://developer.apple.com/library/ios/#documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Introduction.html – millimoose

+0

こんにちは、私は、アドレス帳データ – user198725878

答えて

1

この手順でNSMutable配列内のアドレス帳のエントリを読み込むことができ、その後、あなたがあなたのアプリケーション内にやりたいことができます。

-(NSMutableArray*)loadContactsFromAddressBook{ 

NSMutableArray * contacts = [[NSMutableArray alloc] init]; 
ABAddressBookRef addressBook = ABAddressBookCreate(); 
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); 
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook); 

for (int i = 0; i < nPeople; i++) 
{ 

    ABRecordRef ref = CFArrayGetValueAtIndex(allPeople, i); 

    NSString *fname = (NSString*)ABRecordCopyValue(ref, kABPersonFirstNameProperty);   
    NSString *lname = (NSString*)ABRecordCopyValue(ref, kABPersonLastNameProperty); 

    NSString *name; 
    NSString* phoneNumber; 

    if (lname) { 
     name = [fname stringByAppendingFormat: @" %@", lname]; 
    } else { 
     name = fname; 
    } 

    ABMultiValueRef phoneNumbers = ABRecordCopyValue(ref, kABPersonPhoneProperty); 
    int count = ABMultiValueGetCount(phoneNumbers); 

    if (count > 0 && name) { 

     phoneNumber = (NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0); 

     [contacts addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:name, @"member_name", 
          phoneNumber, @"phone", 
          @"NO", @"invited", 
          nil] ] ; 
    } 

    NSSortDescriptor *aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"member_name" ascending:YES]; 
    [contacts sortUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]]; 
} 
return [contacts autorelease]; 
} 

あなたはAddressBook.frameworkとAddressBookUIを追加する必要があります。フレームワークフレームワークをプロジェクトに追加し、このメソッドを使用するクラスのAddressBook/AddressBook.hファイルをインポートします。

これが役に立ちます。

2

代わりのDBに全体のアドレス帳をコピー(同期は常に痛みである)を格納するDB操作を知っている必要がありますあなたのDBデータ参照とアドレス帳のエンティティを持つDB?その場合、データベース内のABRecordRefというIDを参照できます。

関連する問題