IPhone SDK - Как сериализировать ABRecord?

Я являюсь новым в разработке iPhone, можете Вы совет меня, как сериализировать записи AdressBook?
Я считал stackoverflow - Как делают я сериализирую простой объект в iPhone sdk, но у меня все еще есть вопросы: я должен расширить ABRecordRef? Действительно ли это возможно? Или я должен реализовать собственный класс NSObject?

(подобный вопрос был на форумах Mac и был оставлен без ответа),

Спасибо!

5
задан Community 23 May 2017 в 10:29
поделиться

1 ответ

ABRecord - это непрозрачный тип C. Это не объект в смысле Objective-C. Это означает, что вы не можете расширять его, вы не можете добавлять в него категорию, вы не можете отправлять сообщения. Единственное, что вы можете сделать, это вызывать функции, описанные в ABRecord Reference , с ABRecord в качестве параметра.

Вы можете сделать две вещи, чтобы сохранить информацию, на которую ссылается окружение ABRecord:

  1. Получить идентификатор ABRecords с помощью ABRecordGetRecordID () . ABRecordID определяется как int32_t, поэтому вы можете преобразовать его в NSInteger и сохранить в любом месте. Позже вы можете получить запись обратно из ABAddressBookGetPersonWithRecordID () или ABAddressBookGetGroupWithRecordID () . Но знайте, что запись может быть изменена или даже удалена пользователем или другим приложением.

  2. Скопируйте все значения внутри записи в стандартный подкласс NSObject и используйте NSCoding или другие методы для его сохранения. В этом случае вы, конечно, не выиграете от изменений или дополнений к записи, которые пользователь мог сделать.

Конечно, вы можете комбинировать оба подхода.

12
ответ дан 18 December 2019 в 16:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: