주소록에서 전화 번호를 받고 있습니다. 에 "é와"Teléfono "ABMultiValueCopyLabelAtIndex의 잘못된 CFStringRef
ABMultiValueRef arrTelefonos = ABRecordCopyValue(contacto,kABPersonPhoneProperty);
for(int i=0;i<ABMultiValueGetCount(arrTelefonos);i++) {
CFStringRef labelTelefono = ABMultiValueCopyLabelAtIndex(arrTelefonos,i);
CFStringRef numeroTelefono = ABMultiValueCopyValueAtIndex(arrTelefonos,i);
CFStringRef labelTelefonoLoc = ABAddressBookCopyLocalizedLabel(labelTelefono);
/* Do some stuff */
}
모든 것이 한 경우를 제외하고 좋아입니다 : 내 경우에는 특수 문자로 표시된 전화 연락처는 (있는 경우 레이블은 내가 이런 식으로하고 있어요
CFStringRef labelTelefono = ABMultiValueCopyLabelAtIndex(arrTelefonos,i);
을 할 때 그래도 문제가 있다면, 누구든지 해결책을 알아? 특수 문자를 허용하지 않습니다 인해 CFStringRef에 문제가 무효 CFStringRef ""내가 받고 있어요? "
은 당신을 감사 예고편
'CFStringRef'는 분명히 특수 문자를 포함 할 수 있습니다. 문자열이 유효하지 않다는 것을 정확히 알려줍니다. 그 끈은 어쩌고? –
응용 프로그램을 debbuging 나는 "labelTelefono"var에 "0x000000 잘못된 CFStringRef"값을 보았다. 이 연락처는 다른 장치에서 가져온 것임을 기억합니다. 이제 레이블을 다시 작성하여 응용 프로그램이 작동하기 때문에 "손상된"레이블이 생성되었지만 생성 된 CFStringRef는 "Tel.fono"입니다. 이 캐릭터를 올바르게 구할 수 있습니까? (너무 빨리 대답 해 주셔서 감사합니다) – rai212
나는 미스터리가 해결되었다고 생각합니다. 1. 이전에 말씀 드렸듯이,이 연락처의 레이블이 동일한 문자로 다시 작성되기 때문에 "손상됨"일 가능성이 있습니다. 괜 찮 2.- 두 번째 미스터리 (필자는 "Tel.fono"라는 레이블을 보았습니다.)는 디버그 콘솔에 표시되어 있었고 특수 문자로 "친숙하지"않았기 때문입니다. 감사합니다. 더 많이 조사하면 솔루션으로 나를 데려 간다.) – rai212