2009-06-19 7 views
0

Mit der AddressBook-API scheint die einzige Möglichkeit, eine Liste aller Personen zu erhalten, über 'ABAddressBookCopyArrayOfAllPeople' zu erfolgen, wenn Sie 'ABPeoplePickerNavigationController' nicht verwenden.Großer Datensatz und AddressBooks ABAddressBookCopyArrayOfAllPeople

ABPeoplePickerNavigationController eine Person auswählen und das Sichtverhalten zu entlassen ist nicht das, was ich brauche. Stattdessen möchte ich den Inhalt des Adressbuchs in meine eigene Tabellenansicht laden und dann ein benutzerdefiniertes Auswahlverhalten durchführen.

Aber gibt es eine Möglichkeit, mit dem teilweisen Laden der Adressbuchdaten statt der gesamten Liste umzugehen, um die Daten als Datenquelle der Tabelle zu liefern? Wenn das Adressbuch etwa 3000 Einträge enthält, dann kopiere ich all diese Daten in ein lokales Array - gibt es einen besseren Weg, um eine bessere Leistung zu erzielen?

Antwort

0

Nicht sicher die optimale, aber wenn Sie versuchen, in der Tabelle alle um den Inhalt anzuzeigen, muss es sein „sortiert“ irgendwie nehme an, Sie einfach alphabetisch sortieren sie, dann können Sie statt Kopie alle Adressbuchs nur danach fragen eine Liste der Datensätze mit "a" das Verfahren für diese Start zurückzukehren denke ich: CFArrayRef ABAddressBookCopyPeopleWithName ( ABAddressBookRef adressBuch, CFStringRef Name ); Name kann ein "a *" sein, das alle Personen zurückgeben würde, die mit a beginnen. mehrere Aufrufe dieser Methode aus Ihrer Tabelle können verwendet werden, um zu vermeiden, alle Menschen zu kopieren, die ich denke.

hoffe das hilft, -t

Verwandte Themen