2011-12-07 20 views
3

IPhoneのAddressBook.sqlitedbを自分のIPhoneアプリケーションにエクスポートします。IPhoneアドレス帳データベースをエクスポートする方法

私はネットを中心に検索しましたが、すべてが「ABAddressBook」

を反復するようだが、私はそれはプログラムで私のIPhoneアプリケーションにIPhoneのAddressBook.sqlitedbをエクスポートすることも可能であるかを知りたいですか?

貴重なご意見をお知らせください!あなたの助けのための

おかげで.....

答えて

3

あなたはすべての単一の値を取得してからDBに挿入する必要があります。

私はアプリケーションのDbにiPhoneのアドレス帳を持っているコードです。

だけでは、iPhoneのアドレス帳を取得したいが、私はdelegat.m METHOD- DidFinishLanchingでこのmethosを呼び出すことをお勧めします今までに以下のメソッドを呼び出す:これはあなたを助ける

-(void)fetchRecordsFromAddressBook 
{ 
    ABAddressBookRef addressBook = ABAddressBookCreate(); 
    CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); 
    CFIndex nPeople = ABAddressBookGetPersonCount(addressBook); 

//NSArray *addresses = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); 

//[arrayContacts removeAllObjects]; 

[self emptyDataContext]; 

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


    ABRecordRef ref = CFArrayGetValueAtIndex(allPeople, i); 


    ////////////////// get first name /////////////////// 

    CFStringRef firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty); 

    CFStringRef lastName = ABRecordCopyValue(ref, kABPersonLastNameProperty); 

    CFStringRef nickName = ABRecordCopyValue(ref, kABPersonNicknameProperty); 

    CFStringRef middleName = ABRecordCopyValue(ref, kABPersonMiddleNameProperty); 


    ////////////////// get image /////////////////// 

//  ABMultiValueRef ContactImage = (ABMultiValueRef)  ABRecordCopyValue(ref,kABPersonImageFormatThumbnail); 


    NSData *data=nil; 

// NSLog(@"Image Testing is : %@",ref); 

    if(ABPersonHasImageData(ref)) 
    { 
     data = [(NSData *) ABPersonCopyImageData(ref) autorelease]; 
     if(data) 
     { 
     // NSLog(@"Im Testing is : %@",data); 

      //image = [[UIImage alloc] initWithData:data]; 
     } 
    } 

//  NSLog(@"Im agte is : %@",ContactImage); 
//  NSLog(@" Name is : %@",firstName); 



    ////////////////// get email /////////////////// 

    ABMultiValueRef emails = (ABMultiValueRef) ABRecordCopyValue(ref, kABPersonEmailProperty); 

    NSString *[email protected]""; 

    if(ABMultiValueGetCount(emails)>=1) 
    { 
     emailID = (NSString *)ABMultiValueCopyValueAtIndex(emails,0); 
    } 


    ////////////////// get phone number /////////////////// 

    ABMultiValueRef phones = (ABMultiValueRef) ABRecordCopyValue(ref, kABPersonPhoneProperty); 

    NSString *[email protected]""; 

    NSString *homeNumber = @""; 

    NSString *worknumber = @""; 

    if(ABMultiValueGetCount(phones)>=1) 
    { 
     //int ph = [ABMultiValueCopyValueAtIndex(phones, 0) intValue]; 
     phone = (NSString *)ABMultiValueCopyValueAtIndex(phones,0); 
    } 
// NSLog(@"%@",(NSString*)phone); 


    if(ABMultiValueGetCount(phones)>=2) 
    { 
     homeNumber = (NSString *)ABMultiValueCopyValueAtIndex(phones,1); 
    } 

    if(ABMultiValueGetCount(phones)>=3) 
    { 
     worknumber = (NSString *)ABMultiValueCopyValueAtIndex(phones,2); 
    } 


    NSMutableArray *arrayContacts = [[NSMutableArray alloc] init ]; 


    /////////////////////////////   insert into array    //////////////////////////// 

    arrayContacts = [CoreDataAPIMethods getObjectsFromContext:@"AllContactData" :@"Index" :NO :self.managedObjectContext]; 

    ////////////////////////////   insert Index   /////////////////////////////// 
    int NewEntryID; 

    if ([arrayContacts count] > 0) 
    { 
     AllContactData * Contacdata = [arrayContacts objectAtIndex:0]; 

     NewEntryID = [Contacdata.Index intValue] +1; 

    } 
    else 
    { 
     NewEntryID = 1; 
    } 

    NSString *capitalisedSentence = 
    [(NSString *)firstName stringByReplacingCharactersInRange:NSMakeRange(0,1) 
             withString:[[(NSString *)firstName substringToIndex:1] capitalizedString]]; 

    AllContactData *Contactitem=(AllContactData *)[NSEntityDescription insertNewObjectForEntityForName:@"AllContactData" inManagedObjectContext:self.managedObjectContext]; 

//  NSLog(@"%@",capitalisedSentence); 

    Contactitem.Name = capitalisedSentence; 

    Contactitem.LastName = (NSString*)lastName; 

    Contactitem.NickName = (NSString*)nickName; 

    Contactitem.MiddleName = (NSString*)middleName; 

    Contactitem.Email=(NSString*)emailID; 

    phone = [phone stringByReplacingOccurrencesOfString:@"(" withString:@""]; 

    phone = [phone stringByReplacingOccurrencesOfString:@")" withString:@""]; 

    phone = [phone stringByReplacingOccurrencesOfString:@"+" withString:@""]; 

    phone = [phone stringByReplacingOccurrencesOfString:@" " withString:@""]; 

    phone = [phone stringByReplacingOccurrencesOfString:@"-" withString:@""]; 

    NSLog(@"The Replacing Stinr is : %@", phone); 

    Contactitem.PhoneNumber=(NSString*)phone; 

    Contactitem.HomeNumber=(NSString*)homeNumber; 

    Contactitem.WorkNumber=(NSString*)worknumber; 

    Contactitem.Index = [NSNumber numberWithInt:NewEntryID]; 

    Contactitem.Image = data; 

//  NSLog(@"Image in databse is : %@",(NSData *)ContactImage); 

    if(firstName!=nil) 
    { 
     CFRelease(firstName); 
    } 
    CFRelease(ref); 

} 
CFRelease(allPeople); 


/////////////////////////////   save entries   //////////////////////////// 

NSError *error; 
if (![managedObjectContext save:&error]) { 
    // Handle the error... 
} 


} 



-(void)emptyDataContext 
{ 

self.managedObjectContext = [(Dial_Up_AppAppDelegate*)[UIApplication sharedApplication].delegate managedObjectContext]; 

NSLog(@"managedObjectContext=%@",self.managedObjectContext); 
// Get all counties, It's the top level object and the reference cascade deletion downward 
NSMutableArray* mutableFetchResults = [CoreDataAPIMethods getObjectsFromContext:@"AllContactData" :@"Name" :YES :self.managedObjectContext]; 
// Delete all Counties 
for (int i = 0; i < [mutableFetchResults count]; i++) { 
    [managedObjectContext deleteObject:[mutableFetchResults objectAtIndex:i]]; 
} 
//[mutableFetchResults release]; 
// Update the data model effectivly removing the objects we removed above. 
NSError *error; 
if([mutableFetchResults count] > 0) 
{ 

    if (![managedObjectContext save:&error]) { 
     // Handle the error. 
     //NSLog([error domain]); 
    } 

} 

} 

希望を。

+0

あなたのコードをお寄せいただきありがとうございます。私はこれをチェックして、U agianに戻ってください... – user2136

+0

+1 Nice .... :)) – mAc

関連する問題