2011-08-09 3 views
0

개발 과정에서 연락처에서 ABRecordCopyCompositeName이 몇 레코드에 대해 NULL을 반환하지만 연락처 목록을 정상적으로 볼 때 누락 된 이름이 표시되지 않습니다.왜 ABRecordCopyCompositeName이 NULL이고 다른 대안이 있습니까?

ABRecordCopyCompositeName이 NULL을 반환하는 경우 사용할 표준 대체 라벨은 무엇입니까? 또한, 처음부터 NULL 값이 존재하게하는 원인은 무엇입니까?

(편집 : 제목 수정) 이상하게

는 :

  • 은 "연락처"하단의 카운트 아이폰 응용 프로그램은 119 연락처를 말한다.
  • 나는 모든 항목을 세 었는데, 모두 119 명이 있으며 이름이 있습니다.
  • [ABAddressBookCopyDefaultSource (주소록) 카운트는, I는 3 명 널 엔트리를 포함한 116 얻을 ABAddressBook 각 항목은 제외 119
  • 116 반환한다.

그래서 세 개의 null 항목 중 맨 위에 3 개 이상 누락되었습니다.

답변

2

나는 아직도 더 나은 해답을 찾고 있지만, 그때까지, 여기 내가 찾은 무엇을 해요 :

  • 널 (NULL) 기록 거래소에서 수입 기록에 기인한다. 그들은 이름을 가지고있는 것처럼 보입니다. 만약 당신이 그것들을 편집하고 (UI를 통해) 저장하면, 그 이름은 정확하게 나타납니다. 그러나 그때까지, 나는 그 기록에서 이름을 얻을 수없는 것처럼 보입니다.

'누락 된'레코드 3 개는 여전히 혼란 스럽습니다. Exchange에서 가져 왔지만 ABAddressBookCopyDefaultSource 요청에는 포함되어 있지 않습니다.

해결 방법은 ABAddressBook에서 직접 표 셀을 채우지 않고 항목을 배열에 먼저 복사하여 개수가 정확하도록하는 것입니다. 릴리스가 진행됨에 따라이 루틴으로 돌아가서 매우 큰 주소록에서 메모리 문제가 발생하지 않도록 변경할 수 있습니다.

1

전자 메일이나 다른 필드만으로는 모든 연락처에 firstname과 lastname이 저장되어있는 것은 아닙니다 ... 사과가이 기준에 따라 정렬됩니다 ... 전자 메일 주소가 "[email protected]"인 빈 compositename이 연락처 아래에 나타납니다 "에드워드"라는 이름이 붙어 있습니다 ... 그래서 fallback-thingy를 만드는 것이 합리적입니다 : compositename이 비어 있으면 이메일 주소를 찾으십시오

관련 문제