Импорт VCard в цель C в iPhone - PullRequest
2 голосов
/ 28 ноября 2011

Я разрабатываю приложение для iPhone с использованием XCode 4.2. В части приложения я получу VCard в виде строки NSString

Я нашел эту функцию i nitWithVCardRepresentation и думаю, что это будет легче, чемпарсинг данных один за другим (то есть получение имени, фамилии и т. д.), но мне трудно реализовать его в своем коде.

У меня есть AddressBook и AddressBookUI frameworks, и я пытаюсь использовать этот код, но не могу найти точный способ сделать это

-(IBAction)Add{

  // I have a  NSString *card defined somewhere else
   ABAddressBookRef *iPhoneAddressBook = ABAddressBookCreate();
    ABRecordRef *contact = ABPersonCreatePeopleInSourceWithVCardRepresentation(iPhoneAddressBook, (__bridge_retained CFStringRef) card);

    CFRelease(contact);
    CFRelease(iPhoneAddressBook);   
}

, когда я компилирую, он вылетает в строке ABRecordRef *contact = ABPersonCreatePeopleInSourceWithVCardRepresentation(iPhoneAddressBook, (__bridge_retained CFStringRef) card);, и я получаю следующую зеленую ошибку в@autoreleasepool

Thread1:Program Received Signal "SIGABRT".

Я новичок в разработке приложений, пожалуйста, дайте мне знать, достаточно ли предоставленной мной информации

Спасибо

1 Ответ

0 голосов
/ 30 мая 2012

Если вы хотите иметь ABPerson впоследствии (что желательно), используйте:

// Assuming NSString *card exists already.
ABPerson *person = [[[ABPerson alloc] initWithVCardRepresentation:[card dataUsingEncoding:NSUTF8StringEncoding] autorelease];
...