从 CNContactRelation 获取 CNContact

Obtaining CNContact from CNContactRelation

我正在尝试获取 selected 联系人的所有相关联系人。执行此操作的方法似乎是通过 mycontact.contactRelations。这给出了一个 CNLabeledValue 数组,每个数组都包含一个 CNContactRelation 作为它们的值。然后有一个 name 属性,但它似乎没有别的。

CNContact.ContractRelations 的 Xamarin 文档似乎建议我应该能够从 CNContactRelation 获得相应的 CNContact 但我看不到在 objc 中这样做的方法,其他而不是搜索名称匹配的联系人。这可能是也可能不是我要找的联系人,即使他们也与与 mycontact.

同名的联系人有关系

CNLabeledValue 上的标识符似乎指的是标签而不是相关联系人,或者如果我 select 来自 [=] 的联系人,至少似乎与标识符不匹配19=].

有没有办法获取 objc 中相关联系人的CNContact

通讯录中的相关姓名字段不存储链接,仅存储姓名。如果您在 iOS 或 OS X 联系人应用程序中编辑相关名称,您会从用户的角度注意到这一点——它只是一个自由格式的文本字段。这些应用程序(和其他系统应用程序)会识别相关名称何时与另一个联系人的名称匹配(这就是为什么您可以让 Siri 给您的母亲打电话等),但它们也可以让您记下您没有的人的名字

的联系信息

所以 CNContactRelation 只包含一个字符串,查找(如果有的话)与相关姓名匹配的联系人的唯一方法是搜索联系人存储。使用 unifiedContactsMatchingPredicate:keysToFetch:error: to search, with a predicate constructed by calling predicateForContactsMatchingName:.