gpt4 book ai didi

objective-c - 向 ABPerson 添加可导出属性的任何方法

转载 作者:行者123 更新时间:2023-12-03 16:22:30 32 4
gpt4 key购买 nike

vCard 3.0 标准允许使用带有“X-”前缀的自定义字段来扩展卡片。然而,通过 Objective-C 的 addPropertiesAndTypes:setValue:forProperty: 方法添加属性似乎不会导致导出为其 vCard 格式的添加。通过这种方式添加的信息会保存到地址簿中,但如果您导出卡片以与其他人共享,新的属性就会被保留。

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

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

感谢您的任何/所有帮助

最佳答案

如果它不是开箱即用的,也许您可​​以自己编写代码,并且可以使用 Objective-C 将其混合到 ABPerson 类中 method swizzling 。不幸的是,只有当您的应用程序负责导出和导入时,您以这种方式添加的任何功能才会被使用。由于您谈论的是 vCard,它实际上是一种交换格式,因此这可能不是完全有帮助。 (更不用说方法调配完全是一种黑客行为。)

调试器中的一些快速实验让我相信,C 接口(interface)只是在幕后调用 Objective-C 方法,因此我猜测那里也不会提供任何其他功能。

有趣的是,你说...

If I edit an exported vCard manually, that added property is not displayed in Address Book, but is persistent through subsequent exports.

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

也许你可以使用“NOTE”字段?

关于objective-c - 向 ABPerson 添加可导出属性的任何方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7961186/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com