Любой способ добавить экспортируемое свойство в ABPerson - PullRequest
3 голосов
/ 01 ноября 2011

Стандарт vCard 3.0 позволяет расширять карты с помощью настраиваемого поля с префиксом «X-».Однако добавление свойства с помощью методов Objective-C addPropertiesAndTypes: и setValue:forProperty:, по-видимому, не приведет к добавлению, которое будет экспортировано в его формат vCard.Информация, добавленная таким образом, сохраняется в адресной книге, но если вы экспортируете карту, чтобы поделиться с кем-то другим, новое свойство остается позади.

Есть ли способ использовать платформу AddressBook для добавления расширения vCard (например, «X-»), который будет экспортироваться и импортироваться вместе с картой?

Если я редактирую экспортированную vCard вручную, это добавленное свойство не отображается в адресной книге, но сохраняется при последующем экспорте.Похоже, должен быть способ программной записи в ABPerson, который привел бы к появлению свойства «X-» vCard, а затем впоследствии прочитать это пользовательское свойство в.

Спасибо за любую помощь / все справки

1 Ответ

0 голосов
/ 09 декабря 2011

Если он не делает этого из коробки, возможно, вы могли бы написать код самостоятельно и, возможно, переключить его в класс ABPerson, используя Objective-C метод swizzling .К сожалению, любые функции, добавленные вами таким образом, будут использоваться только в том случае, если ваше приложение выполняет экспорт и импорт.Поскольку вы говорите о vCard, который фактически является форматом обмена, это, вероятно, менее чем полностью полезно.(Не говоря уже о том, что метод swizzling - это полный взлом.)

Некоторые быстрые эксперименты в отладчике убеждают меня, что интерфейс C просто вызывает методы Objective-C за кулисами, поэтому я предполагаю, чтотам также нет никаких дополнительных функций.

Интересно, что вы сказали ...

Если я вручную редактирую экспортированную vCard, это добавленное свойство не отображается в адресной книге, нопостоянный через последующий экспорт.

... но я не видел такого поведения.Реэкспорт импортированной, отредактированной вручную визитной карточки не содержит моего поля X-FOOBAR.Это делает ситуацию еще хуже - это означает, например, что если кто-то импортирует визитную карточку, содержащую ваши поля расширения с приложением Адресной книги, вы, вероятно, потеряете эти поля.Но, возможно, я делаю что-то не так.

Возможно, вы могли бы прокрутить поле NOTE?

...