2016-06-02 3 views

Antwort

1
#import <AddressBook/AddressBook.h> 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    ABAddressBookRef addressBook = ABAddressBookCreate(); 

    __block BOOL accessGranted = NO; 

    if (ABAddressBookRequestAccessWithCompletion != NULL) { // We are on iOS 6 
     dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); 

     ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { 
      accessGranted = granted; 
      dispatch_semaphore_signal(semaphore); 
     }); 

     dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); 

    } 

    else { // We are on iOS 5 or Older 
     accessGranted = YES; 
     [self getContactsWithAddressBook:addressBook]; 
    } 

    if (accessGranted) { 
     [self getContactsWithAddressBook:addressBook]; 
    }     
} 

// Get the contacts. 
- (void)getContactsWithAddressBook:(ABAddressBookRef)addressBook 
{ 

    //----------------------------------------------- create vcf file------------------------------------------ 

    CFArrayRef contacts = ABAddressBookCopyArrayOfAllPeople(addressBook); 
    CFDataRef vcards = (CFDataRef)ABPersonCreateVCardRepresentationWithPeople(contacts); 
    NSString *vcardString = [[NSString alloc] initWithData:(__bridge NSData *)(vcards) encoding:NSUTF8StringEncoding]; 
    NSError *error; 
    NSFileManager *fileMgr = [NSFileManager defaultManager]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *folderPath = [paths objectAtIndex:0]; 
    NSString *filePath = [folderPath stringByAppendingPathComponent:@"contacts.vcf"]; 
    NSLog(@"%@===>",filePath); 
    [vcardString writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil]; 
    NSLog(@"Documents directory: %@",[fileMgr contentsOfDirectoryAtPath: folderPath error:&error]); 

} 

Versuchen Sie dies, es wird funktionieren.