2012-01-03 10 views
6
ABRecordSetValue(person, kABPersonPhoneProperty, (__bridge CFTypeRef)phoneNum, nil); 
ABRecordSetValue(person, kABPersonEmailProperty, (__bridge CFTypeRef)eMailId, nil); 

Komentując te dwie linie daje odpowiedniego wyjścia (oszczędność wpis do Książki adresowej, bez poczty elektronicznej i domofon). Ale podczas wykonywania kończy się niepowodzeniem i powoduje awarię programu.Dodanie numeru telefonu i e-mail do książki adresowej daje katastrofę w iPhoneApp

Wartość dla Vars to:

phoneNum: 000-000-0000

EMAILID: [email protected]

Typ błędu: EXC_BAD_ACCESS

jakiś pomysł ? Czy potrzebujesz więcej informacji?

+0

można proszę podać szczegóły information.What chcesz zrobić faktycznie ..? – Kamarshad

Odpowiedz

16

Dobrze byłoby zobaczyć, gdzie i jakiego rodzaju definiujesz vary. Być może wydałeś także książkę adresową przed tymi liniami. (CFRelease(multiPhone);) I o ile mi wiadomo, phoneNum i emailID powinny być ABMutableMultiValueRef. Przynajmniej tak było, jak to zrobiłem:

Dodawanie pojedynczy numer telefonu

ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType); 

ABMultiValueAddValueAndLabel(multiPhone, [self.contact telephone], kABPersonPhoneMobileLabel, NULL);    
ABRecordSetValue(person, kABPersonPhoneProperty, multiPhone,nil); 

Dodanie e-mail:

ABMutableMultiValueRef multiEmail = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
    ABMultiValueAddValueAndLabel(multiEmail, @"[email protected]", kABWorkLabel, NULL); 
    ABRecordSetValue(person, kABPersonEmailProperty, multiEmail, &error); 
    CFRelease(multiEmail); 

Więcej informacji na temat Address Book tutorial

Nadzieja to pomaga .

+0

Potrzebuję ustawić tylko jeden numer telefonu i jeden identyfikator poczty. Oba zrobiłem typ NSString *, a następnie przekonwertowałem je na CFStringRef. – viral

+0

Zmieniono moją odpowiedź. Ale co masz na myśli przez identyfikator poczty? coś innego niż adres e-mail? –

3

Try This

ABAddressBookRef addressBook = ABAddressBookCreate(); 

ABRecordRef person = ABPersonCreate(); 


ABMutableMultiValueRef phoneNumberMultiValue 

=ABMultiValueCreateMutable(kABPersonPhoneProperty); 

//phoneNumber is the number to be save in Address Book 


ABMultiValueAddValueAndLabel(phoneNumberMultiValue ,phoneNumber,kABPersonPhoneMobileLabel, NULL); 

//EmailId is the emailId to be save in Address Book 

ABMultiValueAddValueAndLabel(phoneNumberMultiValue ,EmailId,kABPersonPhoneMobileLabel, NULL); 

ABRecordSetValue(person, kABPersonPhoneProperty, phoneNumberMultiValue,nil); 

// set the phone number property 

ABAddressBookAddRecord(addressBook, person, nil); 

ABAddressBookSave(addressBook, nil); 

CFRelease(person); 

Mam nadzieję, może być pomocny ...

+1

Dzięki za pomoc ..., – viral

+0

serdecznie zapraszamy ... – Kamarshad

Powiązane problemy