새로운 글
새로운 덧글

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;

번호 제목 글쓴이 날짜 조회 수
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 1227
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 4475
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 1002
공지 [프로그래밍 강의] 2019.4~2019.7 관리자 2015.01.22 7842
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 관리자 2015.06.30 13394
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2019년 5월 업데이트 됨) 험프리 2014.01.16 150264
35 [무료 기술백서] 스마트한 크로스-플랫폼 앱 개발 관리자 2019.05.13 142
34 [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 13. 문자열과 숫자 타입을 서로 변환하기 file 관리자 2019.03.29 140
33 [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 15. TMemo 콘트롤 (계속) file 관리자 2019.03.29 139
32 [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 11. 반복들 file 관리자 2019.03.29 136
31 [10.2 도쿄][릴리즈3] C++빌더 리네임 리팩토링 지원 관리자 2018.03.30 135
30 델파이로 개발된 '3D Train Studio'가 BizWireTV의 'Startup Standout' 분야에 선정되었습니다. file 관리자 2017.03.14 134
29 [코드레이지11] Debug faster. Debug smarter - Primož Gabrijelčič 험프리 2016.11.22 133
28 멀티-플랫폼 앱 멋지게! 쉽게! 빠르게! 완성하기 - #2 완성형 UI에 필요한 데이터 손쉽게 연동하기 file 험프리 2019.07.11 132
27 [개발환경] Git 설치와 저장소 구성(1) 험프리 2019.06.20 131
26 [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 14. TMemo 콘트롤 file 관리자 2019.03.29 131
25 [마이그레이션][팁] 배치파일(커맨드 명령어)을 이용해 손쉽게 소스파일 갯수를 파악할 수 있습니다. 관리자 2019.04.11 128
24 [마이그레이션] C++프로젝트 현대화하기 (다시보기-영문) 관리자 2019.04.18 127
23 [업데이트][핫픽스][10.3] C++툴체인 핫픽스 험프리 2019.01.25 123
22 [10.3 리오][업데이트1] iOS 12, iPhone X 시리즈 디바이스들 지원 관리자 2019.02.22 122
21 이 달의 기술자료 - 2019년 07월 험프리 2019.06.28 116
20 [10.3 리오] RAD 서버 엔드 포인트 연동이 더욱 쉽고 다양해 졌습니다. 험프리 2018.12.06 114
19 [FMX] 파이어몽키 메시징 시스템을 이용해 프로세스 내에서 메시지를 등록하고 구독하는 방법 file 험프리 2017.09.01 114
18 [다시보기] 전세계 개발자를 위한 컨퍼런스! CodeRage 2018 file 관리자 2018.11.29 113
17 [C++빌더 신기능] C++ 리네임 리팩토링 관리자 2019.04.18 112
16 [10.3 리오] 리눅스 컴파일러에 non-ARC 메모리 모델이 적용됩니다. 험프리 2018.12.04 112


광고 모듈이 설치되어 있지 않아 실행을 중단합니다..