3

vCard 3.0 标准允许使用带有“X-”前缀的自定义字段来扩展卡片。但是,通过 Objective-CaddPropertiesAndTypes:setValue:forProperty:方法添加属性似乎不会导致添加到它的 vCard 格式。以这种方式添加的信息会保存到通讯录中,但如果您导出卡以与其他人共享,则新属性会被遗忘。

有没有办法使用 AddressBook 框架添加将与卡一起导出和导入的 vCard 扩展(如“X-”)?

如果我手动编辑导出的 vCard,添加的属性不会显示在通讯簿中,但会通过后续导出保持不变。似乎应该有一种方法可以以编程方式写入 ABPerson,这会导致“X-”vCard 属性,然后读取该自定义属性。

感谢您的任何/所有帮助

4

1 回答 1

0

如果不是开箱即用,也许您可​​以自己编写代码,并可能使用 Objective-C方法 swizzling将其调入 ABPerson 类。不幸的是,您以这种方式添加的任何功能都只会在以下情况下使用您的应用程序是执行导出和导入的应用程序时才会使用。由于您谈论的是实际上是一种交换格式的 vCard,因此这可能不太有用。(更不用说方法调配完全是一种技巧。)

调试器中的一些快速实验让我相信 C 接口只是在幕后调用 Objective-C 方法,所以我猜测那里也不会提供额外的功能。

有趣的是,你说...

如果我手动编辑导出的 vCard,添加的属性不会显示在通讯簿中,但会通过后续导出保持不变。

...但我没有看到这种行为。重新导出的手动编辑的导入 vCard 不包含我的 X-FOOBAR 字段。这使情况看起来更糟——这意味着,例如,如果有人使用地址簿应用程序导入了包含您的扩展字段的 vCard,您可能会丢失这些字段。但也许我做错了什么。

也许您可以搭载 NOTE 字段?

于 2011-12-09T17:52:18.853 回答