我正在使用XCode 4.2开发iPhone应用程序。在应用程序的一部分中,我将获得VCard作为NSString

我在nitWithVCardRepresentation中发现了这个函数,我认为它比一个一个地解析数据要容易得多(即先得到名字然后再得到姓氏等,但是我很难在代码中实现它。

我有AddressBookAddressBookUI框架,但我尝试使用此代码,但找不到确切的方法

-(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".

我对Apps开发非常陌生,请告诉我我提供的信息是否足够

谢谢

最佳答案

如果您以后想要一个ABPerson(建议),请使用:

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

09-25 20:22