Управление записями адресной книги
Можно управлять людьми и группами в адресной книге пользователя. Эта статья объясняет, как получить адресную книгу пользователя, добавьте и удалите людей и группы от той адресной книги, управляйте группами, найдите запись, соответствующую зарегистрированному пользователю, и сохраните свои изменения.
Доступ к адресной книге
Существует два способа получить копию адресной книги. Предпочтительный путь состоит в том, чтобы использовать ABAddressBook
метод addressBook
. Объект адресной книги, который это возвращает, должен только использоваться на том же потоке, что это создавалось на и может использоваться с ABPerson
метод initWithAddressBook:
.
Если Вы просто делаете одноразовые поиски и редактирования, ABAddressBook
метод sharedAddressBook
может использоваться. Однако этот метод может вызвать значительное уменьшение в производительности, особенно в жестком цикле.
Например, можно заменить код, такой как следующее:
for (id item in someDataStructure) { |
ABPerson* person = [[ABPerson alloc] init]; |
// Populate the person from the item |
} |
[[ABAddressBook sharedAddressBook] save]; |
С кодом как следующий, приводя к значительному увеличению производительности:
ABAddressBook* tempBook = [ABAddressBook addressBook]; |
for (id item in someDataStructure) { |
ABPerson* person = [[ABPerson alloc] initWithAddressBook:tempBook]; |
// Populate the person from the item |
} |
[tempBook save]; |
Добавление и удаление записей лица и группы
ABAddressBook
класс обеспечивает методы для доступа, добавления и удаления записи лица и группа. Например, используйте groups
метод для получения массива всей группы записывает в базе данных, или people
метод для получения всех записей лица.
Добавление нового лица или записи группы берет следующие шаги:
Получите адресную книгу. Предпочтительный способ сделать это с
ABAddressBook
методaddressBook
.Создайте запись группы или лицо. Необходимо выделить и инициализировать соответствующее
ABPerson
илиABGroup
объект. Предпочтительный инициализаторinitWithAddressBook:
.Добавьте запись на Адресную книгу с помощью
ABAddressBook
методaddRecord:
.
Для удаления лица или группы используйте ABAddressBook
метод removeRecord:
.
Managing Groups
Платформа Адресной книги позволяет Вам добавить людей и подгруппы группам, а также узнать все группы, в которых находятся лицо или подгруппа.
Чтобы добавить и удалить людей из группы, используйте addMember:
и removeMember:
методы. Запись лица может только быть добавлена к группе после того, как она была сохранена к адресной книге. Для получения списка всех групп, лицо находится в, используйте parentGroups
методы.
Можно также добавить группы к группе. Например, у пользователя могла быть группа под названием Любители домашних животных, содержащая Любителей собак групп и Любителей кошек. Чтобы добавить и удалить группы из другой группы, используйте addSubgroup:
и removeSubgroup:
методы. Вы не можете создать цикл. Например, если Любители собак являются подгруппой Любителей домашних животных, то Любители домашних животных не могут быть подгруппой Любителей собак, прямо или косвенно. Для получения списка всех групп, из которых другая группа является подгруппой используйте parentGroups
методы.
Для получения списков того, что находится в группе используйте members
и subgroups
методы.
Доступ к записи пользователя
В настоящее время входил в систему, пользователь может указать запись, содержащую информацию о себе или ней. Это позволяет Вашему приложению найти имя, адрес или телефонный номер пользователя, таким образом, можно использовать его при заполнении форм, например. Для получения записи зарегистрированного пользователя используйте ABAddressBook
метод me
. Для установки рекорда зарегистрированного пользователя используйте ABAddressBook
setMe:
методы.
Сохранение Ваших изменений
При изменении базы данных Address Book те изменения внесены в памяти, а не к самой базе данных. Если Вы не сохраните те изменения, они будут потеряны.
Для сохранения изменений в базе данных используйте ABAddressBook
метод save
или saveAndReturnError:
. Чтобы протестировать, не сохраняются ли там изменения, используйте ABAddressBook
метод hasUnsavedChanges
.
Уведомление об изменениях
Если какое-либо приложение, включая Ваше собственное, вносит изменения в базу данных, Адресная книга отправляет уведомления. Как правило, Вы наблюдаете, что эти уведомления обновляют любое зависимое представление или объекты модели в Вашем приложении. Платформа Адресной книги отправляет два уведомления: kABDatabaseChangedNotification
указать, что текущий процесс внес изменение, и kABDatabaseChangedExternallyNotification
указать, что другой процесс внес изменение. Использовать NSNotificationCenter
для регистрации для уведомлений, Вы интересуетесь. Обратите внимание на то, что эти уведомления не отправляются до окончания sharedAddressBook
метод ABAddressBook
класс или функция C ABGetSharedAddressBook
был вызван.
Если Ваше приложение использует совместно используемый объект адресной книги (возвращенный sharedAddressBook
метод), изменения были уже объединены в автоматически и сразу доступны при получении уведомления изменения. Несовместно используемые объекты адресной книги (возвращенныйaddressBook
метод), обычно используются только в течение короткого времени и не обрабатывают уведомления изменения автоматически.
Пример
Этот пример Objective C добавляет лицо по имени Джон Доу к адресной книге текущего пользователя. Примите во внимание, как код получает доступ к совместно используемой адресной книге и как это выделяет новое ABPerson
объект. Также отметьте используемые свойства (в этом случае, просто имя и фамилия), и заключительное сохранение, отправляющее изменения в адресной книге пользователя:
ABAddressBook *addressBook; |
ABPerson *newPerson; |
addressBook = [ABAddressBook sharedAddressBook]; |
newPerson = [[ABPerson alloc] init]; |
[newPerson setValue:@"John" |
forProperty:kABFirstNameProperty]; |
[newPerson setValue:@"Doe" |
forProperty:kABLastNameProperty]; |
[addressBook addRecord:newPerson]; |
[addressBook save]; |