http://blogs.embarcadero.com/ao/2012/01/24/39203


iOS Address Book fun

Getting data out of the iOS address book is a lot harder than I thought… Must make component… ;)

Here’s a Q&D routine I managed to eek out today. It simply prints all contacts and all their numbers to the log console.

Enjoy!

uses
  iPhoneAll, AddressBook, CFArray, CFBase;

procedure DumpAddressBook;
var
  addressBook : ABAddressBookRef;
  allPeople : CFArrayRef;
  nPeople : CFIndex;
  ref : ABRecordRef;
  i, j : Integer;
  firstName : CFStringRef;
  lastName : CFStringRef;
  phoneNumber : CFStringRef;
  l, v : CFStringRef;
  S : NSString;
begin
  addressBook := ABAddressBookCreate;
  allPeople := ABAddressBookCopyArrayOfAllPeople(addressBook);
  nPeople := ABAddressBookGetPersonCount(addressBook);

  for i:=0 to nPeople-1 do begin
    ref := CFArrayGetValueAtIndex(allPeople,i);

    firstName := ABRecordCopyValue(ref,kABPersonFirstNameProperty);
    lastName := ABRecordCopyValue(ref,kABPersonLastNameProperty);
    if firstName <> nil then
      if lastName <> nil then
        S := NSString.stringWithFormat(NSSTR(PChar('%@, %@')),lastName,firstName)
      else
        S := NSString.stringWithFormat(NSSTR(PChar('%@')),firstName)
    else
      if lastName <> nil then
        S := NSString.stringWithFormat(NSSTR(PChar('%@')),lastName);
    NSLog(S);

    phoneNumber := ABRecordCopyValue(ref, kABPersonPhoneProperty);
    for j:=0 to ABMultiValueGetCount(phoneNumber)-1 do begin
      l := ABMultiValueCopyLabelAtIndex(phoneNumber,j);
      v := ABMultiValueCopyValueAtIndex(phoneNumber,j);
      S := NSString.stringWithFormat(NSSTR(PChar('%@: %@')),l,v);
      NSLog(S);
      CFRelease(l);
      CFRelease(v);
    end;

    if phoneNumber <> nil then
      CFRelease(phoneNumber);
    if firstName <> nil then
      CFRelease(firstName);
    if lastName <> nil then
      CFRelease(lastName);
  end;
end;

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15405
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13957
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16493
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22044
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23266
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18920
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39241
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174691
1323 BOGO 프로모션 툴 다운로드 받는 방법 안내(2015.6.1~2015.6.30 구매고객) 관리자 2014.06.16 8776
1322 델파이 XE2의 Namespace 문제 박병일 2012.01.19 8692
1321 [델파이 문법] 프로시저와 함수 #1 file 관리자 2012.07.23 8660
1320 [링크]안드로이드를 위한 데이터 스냅 서버 박병일 2012.01.12 8428
1319 Firemonkey MAC OSX 에서 ComboBox 다운현상 [2] c2design 2012.03.28 8339
1318 VCL 폼을 파이어몽키 폼으로 바꿀수 있는 컨버터 프로그램 file 박병일 2012.03.01 8328
1317 Platforms Expert for XE2 Beta 2 file 박병일 2012.02.06 8328
1316 [동영상강의] 델파이 기본교육_3.유니트구조와 코드작성1 관리자 2012.05.03 8288
1315 [델파이 문법] 데이터 타입, 변수 및 상수 #2 file 관리자 2013.02.04 8230
1314 [델파이 문법] 프로그램과 유닛 #2 file 관리자 2012.09.06 8220
1313 RadPHP 한글문제 관리자 2012.04.13 8196
1312 [참고] MAC OSX 어플리케이션 프로젝트 경로 문제 [1] c2design 2012.03.23 8141
1311 [델파이 문법] 클래스와 객체 #13 file 관리자 2012.06.11 8032
1310 [델파이 문법 시리즈] #1. 익명메소드 - 문법 file 관리자 2012.04.04 8005
1309 dbExpress 에는 TUpdateSQL 컴포넌트가 없어요! file 박병일 2012.03.05 7955
1308 VCL Style을 사용하면서 Edit 콘트롤의 컬러 변경하기 file 박병일 2012.02.08 7947
1307 [델파이 문법 시리즈] #8. 제네릭 - 문법 변경 사항(마지막) file 관리자 2012.04.03 7871
1306 [추가자료] 델파이에서 안드로이드 앱 개발 "환경설정과 개발의 시작" [1] 관리자 2013.10.01 7830
1305 Runtime Packages 옵션으로 프로그램(배포) 용량 줄이기 [4] file Humphery 2013.12.19 7764
1304 20120510 "C++로 윈도우용과 맥용을 동시에 개발하기" 세션 동영상 관리자 2012.06.06 7756