vCard 3.0标准允许使用带有“X-”前缀的自定义字段扩展卡片。但是,通过Objective-C的addPropertiesAndTypes:
和setValue:forProperty:
方法添加属性似乎不会导致将其导出为其vCard格式的添加。添加的信息会保存到地址簿中,但如果您导出该卡与其他人共享,则新属性会被遗忘。
是否有办法使用AddressBook框架添加将随卡片导出和导入的vCard扩展名(如“X-”)?
如果我手动编辑导出的vCard,则添加的属性不会显示在“地址簿”中,但会通过后续导出保持不变。似乎应该有一种方法以编程方式写入ABPerson,这将导致“X-”vCard属性,然后随后读取该自定义属性。
感谢您提供任何/所有帮助
答案 0 :(得分:0)
如果它没有开箱即用,也许你可以自己编写代码,也许可以使用Objective-C method swizzling将其调到ABPerson类中。不幸的是,只有当您的应用是进行导出和导入的应用时,才会使用您添加的任何功能。既然你所说的vCard实际上是一种交换格式,那可能不是完全有用的。 (更不用说旋转方法完全是黑客攻击。)
调试器中的一些快速实验让我相信C接口只是在幕后调用Objective-C方法,所以我猜测那里也没有额外的功能。
有趣的是,你说......
如果我手动编辑导出的vCard,则不会添加该属性 显示在地址簿中,但通过后续持续存在 出口。
...但我没有看到这种行为。导入的手动编辑的vCard的重新导出不包含我的X-FOOBAR字段。这使得情况看起来更糟糕 - 例如,这意味着,如果某人使用地址簿应用程序导入了包含您的扩展字段的vCard,则您可能会丢失这些字段。但也许我做错了什么。
也许你可以捎带在NOTE字段上?