【问题标题】:phone number predicate on CNContactStoreCNContactStore 上的电话号码谓词
【发布时间】:2015-11-07 11:03:23
【问题描述】:

我正在用 Swift 构建一个应用程序。我想使用phoneNumber(作为字符串)创建谓词,并从CNContactStore 中检索该联系人的姓名(如果存在)。我可以通过以下方式很容易地制作名称谓词:

let pred = CNContact.predicateForContactsMatchingName(name: String)

但是有没有办法为PhoneNumber 做同样的事情。我当然可以获取整个CNContactStore,遍历它并检索联系人。但我想知道是否有更好的方法。

【问题讨论】:

  • 两个不同的人是否可以有重复(相同)的联系电话?
  • 这是我没有想到的。我猜 CNContactStore 会给我不止一个值。
  • @VRAwesome 是的,它也很常见。示例:我、我的妻子和两个孩子共用同一个“家庭”电话号码(尽管每个人的“移动”电话号码不同)。我的联系人和其他几十个联系人共用同一个“工作主线”电话号码(公司的主线)。

标签: ios swift nspredicate cncontact cncontactstore


【解决方案1】:

对于任何看到这篇文章的人。 在 iOS11 中,Apple 引入了这种通过电话号码获取联系人的新方法。 https://developer.apple.com/documentation/contacts/cncontact/3020511-predicateforcontacts

见: https://nshipster.com/ios-12/

【讨论】:

  • 现在这应该是指定的选择答案,并添加了“在 iOS SDK 11 之前,您必须遍历所有联系人并过滤您正在寻找的电话号码”
  • 那里还有很多其他类似有用的谓词!
【解决方案2】:

简而言之:您不能创建谓词来根据电话号码进行过滤。您必须拉出所有联系人并进行迭代。注意:对于任何给定的电话号码,它 1) 可能不存在于联系人中,或 2) 存在不止一次。

查看这篇文章: https://forums.developer.apple.com/thread/19329

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-16
    • 2021-08-18
    • 2015-07-21
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    相关资源
    最近更新 更多