Управление записями адресной книги

Можно управлять людьми и группами в адресной книге пользователя. Эта статья объясняет, как получить адресную книгу пользователя, добавьте и удалите людей и группы от той адресной книги, управляйте группами, найдите запись, соответствующую зарегистрированному пользователю, и сохраните свои изменения.

Доступ к адресной книге

Существует два способа получить копию адресной книги. Предпочтительный путь состоит в том, чтобы использовать 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 метод 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];