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

Al comentar estas dos líneas da salida adecuada (guardando la entrada a AdressBook, sin correo electrónico y la entrada de teléfono). Pero, mientras está en ejecución, falla y bloquea el programa.Adición número de teléfono y correo electrónico a la libreta de direcciones da accidente en iPhoneApp

valor para el Vars son:

phoneNum: 000-000-0000

EMAILID: [email protected]

Tipo de error: EXC_BAD_ACCESS

Cualquier Idea ? ¿O necesita más información?

+0

puede usted proporcionar por favor el detalle information.What es lo que quiere hacer realidad ..? – Kamarshad

Respuesta

16

Sería bueno ver dónde y de qué tipo se definen los vars. Es posible que también haya lanzado la libreta de direcciones antes de esas líneas. (Por ejemplo, CFRelease(multiPhone);) Y hasta donde yo sé, phoneNum y emailID deben ser ABMutableMultiValueRef. Al menos así fue como lo hice:

Adición de un número de teléfono sola

ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType); 

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

Adición de e-mail:

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

Más información sobre Address Book tutorial

Espero que esto ayude .

+0

Necesito configurar un solo número de teléfono y una única identificación de correo. Los dos he tomado de tipo NSString *, y luego los convertí, en CFStringRef. – viral

+0

Editado mi respuesta. ¿Pero qué quiere decir con identificación de correo? algo diferente a una dirección de correo electrónico? –

3

Trate Esta

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); 

espero que puede ser servicial ...

+1

Gracias por su ayuda ..., – viral

+0

bienvenida ... – Kamarshad

Cuestiones relacionadas