Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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
Ios 通讯簿记录可以通过编程方式链接吗?_Ios_Macos_Addressbook_Abrecord_Abperson - Fatal编程技术网

Ios 通讯簿记录可以通过编程方式链接吗?

Ios 通讯簿记录可以通过编程方式链接吗?,ios,macos,addressbook,abrecord,abperson,Ios,Macos,Addressbook,Abrecord,Abperson,ABPerson具有获取所有“链接”人员记录的api CFArrayRef ABPersonCopyArrayOfAllLinkedPeople ( ABRecordRef person ); 什么决定了此调用的返回结果(即链接是如何建立的)?我的目标是创建一个链接到现有记录的新地址簿记录(代码)。我通过尝试将信息写入相关的ABRecordRef以及链接到该记录的记录来实现这一点。如果向所有链接记录写入权限失败(例如,唯一的记录是Facebook联系人),我将创建一个与现有记录同名的新记

ABPerson具有获取所有“链接”人员记录的api

CFArrayRef ABPersonCopyArrayOfAllLinkedPeople (
   ABRecordRef person
);

什么决定了此调用的返回结果(即链接是如何建立的)?我的目标是创建一个链接到现有记录的新地址簿记录(代码)。

我通过尝试将信息写入相关的ABRecordRef以及链接到该记录的记录来实现这一点。如果向所有链接记录写入权限失败(例如,唯一的记录是Facebook联系人),我将创建一个与现有记录同名的新记录,并将其与通讯簿链接。这种行为在任何地方都没有记录,但如果没有链接联系人的公共方法,它可能是唯一的选择。

没有公共API来建立您自己的链接。你想完成什么?我成功地添加了一条与现有记录名和姓相同的记录,并且通讯簿框架自动将我的新记录与现有记录链接,但据我所知,这在任何地方都没有记录,所以我不确定它有多可靠。我正在尝试为从ABPeoplePickerNavigationController中选择的人可靠地编写新数据。有时,用户选择某人后返回的ABRecordRef是不可写的(对ABRecordSetValue()的调用以“无法完成…”失败)。不可写的记录似乎是包含社交媒体档案的链接记录(如Facebook)。所以我想我应该用我想要的数据创建一个新的记录,并将它与所选的人链接起来。逻辑是我总是可以写一个新创建的记录。我怀疑你说的是真的。我希望苹果能够更新这个粗糙的旧API。除非其他人提供更多相反的信息,否则我们将假设alivingston是正确的,并且两个或多个ABRecords之间的链接是通过具有相同的名字和姓氏“自动”建立的。如果有人能对这一限制有更多的了解,请分享。我很想知道发生这种情况的机制。我希望abPersonCopyArrayFallLinkedPeople()调用不是在地址簿中所有记录的多个字段之间动态进行字符串比较。它肯定不是动态返回链接的人。我花了相当长的时间试图在通讯簿中查找各种边缘案例。您可以深入通讯簿联系人查看链接记录-如果更改链接记录的名称,它们将保持与各自记录的链接。解除链接的唯一方法是将contacts应用程序置于编辑模式,并告诉它解除链接。因此,在某个时间点上,苹果正在建立一个ABRecords之间的关系,除非用户明确地这样做,否则该关系似乎不会被删除。从iOS 8.3开始,我无法复制这个函数。它看起来已经完全消失了:(@Tim自从iOS 8发布以来,我再也没有深入研究过这一点,而且很多行为都没有记录在案——因此,如果幕后发生了一些改变,打破了我们所看到的一些行为,那也就不足为奇了(