Я являюсь новым в разработке iPhone, можете Вы совет меня, как сериализировать записи AdressBook?
Я считал stackoverflow - Как делают я сериализирую простой объект в iPhone sdk, но у меня все еще есть вопросы: я должен расширить ABRecordRef? Действительно ли это возможно? Или я должен реализовать собственный класс NSObject?
(подобный вопрос был на форумах Mac и был оставлен без ответа),
Спасибо!
ABRecord - это непрозрачный тип C. Это не объект в смысле Objective-C. Это означает, что вы не можете расширять его, вы не можете добавлять в него категорию, вы не можете отправлять сообщения. Единственное, что вы можете сделать, это вызывать функции, описанные в ABRecord Reference , с ABRecord в качестве параметра.
Вы можете сделать две вещи, чтобы сохранить информацию, на которую ссылается окружение ABRecord:
Получить идентификатор ABRecords с помощью ABRecordGetRecordID ()
. ABRecordID определяется как int32_t, поэтому вы можете преобразовать его в NSInteger и сохранить в любом месте. Позже вы можете получить запись обратно из ABAddressBookGetPersonWithRecordID ()
или ABAddressBookGetGroupWithRecordID ()
. Но знайте, что запись может быть изменена или даже удалена пользователем или другим приложением.
Скопируйте все значения внутри записи в стандартный подкласс NSObject и используйте NSCoding или другие методы для его сохранения. В этом случае вы, конечно, не выиграете от изменений или дополнений к записи, которые пользователь мог сделать.
Конечно, вы можете комбинировать оба подхода.