Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 向ABPerson添加可导出属性的任何方法_Objective C_Cocoa_Abaddressbook_Vcf Vcard - Fatal编程技术网

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

Objective c 向ABPerson添加可导出属性的任何方法,objective-c,cocoa,abaddressbook,vcf-vcard,Objective C,Cocoa,Abaddressbook,Vcf Vcard,vCard 3.0标准允许使用带有“X-”前缀的自定义字段扩展卡。但是,通过Objective-C的addPropertiesAndTypes:和setValue:forProperty:方法添加属性似乎不会导致导出为vCard格式的添加。以这种方式添加的信息会保存到通讯簿中,但如果您将卡导出以与其他人共享,则新属性会被保留 是否有一种方法可以使用AddressBook框架添加一个vCard扩展(如“X-”),该扩展将随卡导出和导入 如果手动编辑导出的vCard,则添加的属性不会显示在通讯簿中,

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

是否有一种方法可以使用AddressBook框架添加一个vCard扩展(如“X-”),该扩展将随卡导出和导入

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


感谢您提供的任何/所有帮助

如果它不是开箱即用的,也许您可以自己编写代码,或者使用Objective-C将其快速转换到ABPerson类中。不幸的是,您以这种方式添加的任何功能只有在您的应用程序正在进行导出和导入时才会使用。既然你说的是vCard,它实际上是一种交换格式,那可能就没什么帮助了。(更不用说方法swizzling完全是一种黑客行为。)

调试器中的一些快速实验让我确信,C接口只是在幕后调用Objective-C方法,因此我猜那里也没有其他可用的功能

有趣的是,你说

如果手动编辑导出的vCard,则添加的属性不可用 显示在通讯簿中,但在后续 出口

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

也许你可以背上笔记栏