Я новичок в задаче C и могу срочно создать приложение.Я использую XCode 4.2
в части приложения. Я буду обнаруживать QR-код и получать VCard в формате NSString: я выполнил функцию, используя следующий код: -Я импортировал следующее в фреймворки:
AddressBookUI.framework
AddressBook.framework
в .h файле, который я написал:
#import <addressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>
@interface HellowWorld : UIViewController<ABPeoplePickerNavigationControllerDelegate>{
}
-(IBAction)saveContacts;
@end
в .m файле, который я написал:
-(IBAction)saveContacts{
NSString *vCardString = test //where the data will be comming from
CFDataRef vCardData = (CFDataRef)[vCardString dataUsingEncoding:NSUTF8StringEncoding]; ABAddressBookRef book = ABAddressBookCreate();
ABRecordRef defaultSource = ABAddressBookCopyDefaultSource(book);
CFArrayRef vCardPeople = ABPersonCreatePeopleInSourceWithVCardRepresentation(defaultSource, vCardData);
for (CFIndex index = 0; index < CFArrayGetCount(vCardPeople); index++) {
ABRecordRef person = CFArrayGetValueAtIndex(vCardPeople, index);
ABAddressBookAddRecord(book, person, NULL);
CFRelease(person);
}
CFRelease(vCardPeople);
CFRelease(defaultSource);
ABAddressBookSave(book, NULL);
CFRelease(book);
}
Я использовал этот код, но это не такработает.
Сначала он не скомпилировал эту строку:
CFDataRef vCardData = (CFDataRef)[vCardString dataUsingEncoding:NSUTF8StringEncoding];
Мне пришлось изменить это на следующее:
CFDataRef vCardData = (__bridge CFDataRef)[vCardString dataUsingEncoding:NSUTF8StringEncoding];
и после компиляции он вылетает на этой строке:
for (CFIndex index = 0; index < CFArrayGetCount(vCardPeople); index++) {
Выдает следующую зеленую ошибку: Thread1: Program Received Signal "EXC_BAD_ACCESS"
.Любые причины?
также это единственный способ сохранить VCard (в формате NSString) в адресной книге?другие предложения?