2011-12-07 1 views
3

Je souhaite exporter AddressBook.sqlitedb d'IPhone dans mon application IPhone.Possibilités d'exportation du carnet d'adresses IPhone db

J'ai cherché sur le net, mais tout semble itérer sur la « ABAddressBook »

mais je veux savoir est-il possible d'exporter AddressBook.sqlitedb IPhone dans mon application iPhone programme?

S'il vous plaît laissez-moi savoir tous les commentaires utiles !!!

Merci pour votre aide .....

Répondre

3

vous devez chercher chaque valeur unique, puis insérez-le dans votre base de données.

Voici le code par lequel j'ai reçu le carnet d'adresses iphone dans la base de données de mon application.

simplement appeler la méthode ci-dessous où vous voulez obtenir livre iphone d'adresses, mais je vais vous suggère d'appeler cette methos dans delegat.m méthodolo- DidFinishLanching:

-(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]); 
    } 

} 

} 

Espérons que cela vous aidera.

+0

Merci pour votre code .. Laissez-moi vérifier cela et revenir à vous ... – user2136

+0

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

Questions connexes