如何使用 CNContactPickerViewController 使用一组电话号码来过滤联系人?

2023-12-22

我尝试使用一组现有电话号码从地址簿中过滤一些联系人。CNContactPickerViewController当这些联系人的电话号码与现有电话号码匹配时,应禁止选择这些联系人。

我需要使用电话号码作为过滤器,因为这些电话号码可能来自其他应用程序平台。并且该服务不应允许用户使用已存在的相同电话号码进行联系。我不想仅仅为了这个快速操作而创建自己的联系人选择器。

这是我到目前为止所尝试过的。

NSArray<CNPhoneNumber *> *existingPhoneNumbers = @[@"1111", @"2222"];

CNContactPickerViewController *contactPicker = [[CNContactPickerViewController alloc] init];
contactPicker.delegate = self;
contactPicker.displayedPropertyKeys = @[CNContactNamePrefixKey,
                                        CNContactGivenNameKey,
                                        CNContactFamilyNameKey,
                                        CNContactOrganizationNameKey,
                                        CNContactPhoneNumbersKey];

NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"NOT (ANY phoneNumbers.value.stringValue IN %@)", existingPhoneNumbers];

contactPicker.predicateForEnablingContact = predicates;

错误信息:

[CNUI ERROR] Error when showing picker: Error Domain=CNErrorDomain Code=300 "(null)" UserInfo={CNValidationErrors=(
"Error Domain=CNErrorDomain Code=400 \"Invalid Predicate\" UserInfo={CNKeyPaths=(\n    \"phoneNumbers.value.stringValue\"\n), NSLocalizedDescription=Invalid Predicate, NSLocalizedFailureReason=The operation couldn't be completed because its predicate is invalid.}")}

With SUBQUERY它仍然不起作用。

NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"SUBQUERY(phoneNumbers, $CNLabeledValue,$CNLabeledValue.value.stringValue IN %@).@count == 0"];

错误信息:

[CNUI ERROR] Error when showing picker: Error Domain=CNErrorDomain Code=300 "(null)" UserInfo={CNValidationErrors=(
"Error Domain=CNErrorDomain Code=400 \"Invalid Predicate\" UserInfo={CNKeyPaths=(\n    \"value.stringValue\"\n), NSLocalizedDescription=Invalid Predicate, NSLocalizedFailureReason=The operation couldn't be completed because its predicate is invalid.}")}

还尝试过predicateWithBlock:。它根本不支持基于块的谓词。

From WWDC 2015 介绍适用于 iOS 和 OS X 的联系人框架会议 https://developer.apple.com/videos/play/wwdc2015/223/。 他们说predicateForEnablingContact在“CNContact”上进行评估。该文档没有说谓词必须来自CNContact+Predicates like CNContactFetchRequest does.


已经发现问题了。当我遇到这个问题时,我的头发都快掉光了。解决方案是在值中添加撇号。像这样

let predicate = NSPredicate(format: "ANY self.phoneNumbers.'value'.'digits' BEGINSWITH %@", "+420" 

我希望这可以帮助你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 CNContactPickerViewController 使用一组电话号码来过滤联系人? 的相关文章

  • 将文件上传到 Google 云端硬盘时出错

    我已经在我的应用程序项目中实现了 Google Drive SDK 并尝试在 Google Drive 中上传图像 但出现错误 我的代码来自Here https developers google com drive quickstart
  • 如何使用所有类型的 UTI 初始化 UIDocumentPickerViewController

    我想打开 UIDocumentPickerViewController 并且它应该允许用户选择所有类型的文件 我尝试在 UIDocumentPickerViewController init 方法中提及所有 UTI 但仍然找不到某些文件 如
  • MFMailcomposeviewcontroller 发送按钮被禁用

    有没有人遇到这样的问题MFMailcomposeviewcontroller发送按钮被禁用 变灰 取消按钮工作得很好 这似乎是一个新错误 如果本机邮件应用程序从 iPhone 中删除 从 iOS 10 开始允许 则可能会发生这种情况 在这种
  • 验证 iOS 应用程序时出现 com.apple.developer.linked-domains 问题

    当我在 Xcode 中使用 Organizer 验证我的项目时 出现以下错误 无效的代码签名权利 你的申请包的签名包含代码签名权利iOS 上不支持的 具体来说 值 for key com apple developer associated
  • 在哪里可以了解有关 WebCoreSharedBufferData 的更多信息?

    我有一个在 iOS 6 上完美运行的应用程序 但在 iOS 7 上 如果用户采取了非常具体的操作 太复杂而无法进入 但它使用UIWebView并且它是一致的 应用程序崩溃并出现错误 Terminating app due to uncaug
  • UITableView 干扰状态栏

    我正在开发一个具有 UITableViewController 的应用程序 该应用程序显示值列表 如下所示 如何将表格向下移动 使其不会与状态栏冲突 看来我无法对这个场景施加任何限制 所以我不知所措 使用以下 3 个属性UIViewCont
  • 用于测试对象类型的通用 Swift 函数

    我正在尝试编写一个函数 该函数接受一个对象和一个类型作为参数 并返回一个布尔值 指示该对象是否属于给定类型 似乎没有 Type 类型 所以我不知道如何做到这一点 我能做的最好的就是 func objectIsType
  • ReferenceError:找不到变量:__gCrWeb

    我的网站上有 javascript 错误跟踪 最近 我开始在 iPhone IOS 7 和 8 上的 Chrome 版本 37 和 38 中收到以下错误 ReferenceError 找不到变量 gCrWeb 除了一些参考文献之外 我找不到
  • UIPinchGestureRecognizer在水平和垂直方向分别的缩放

    使用 UIPinchGestureRecognizer 时 分别检测 读取水平和垂直方向上的捏合比例的最佳方法是什么 我看到了这个帖子 UIPinchGestureRecognizer 不同 x 和 y 方向的缩放视图 https stac
  • didReceiveRemoteNotification 未调用,iOS 10

    在 iOS 9 3 中 didReceiveRemoteNotification方法在以下两种情况下都会被调用 1 收到推送通知时 2 当用户通过点击通知启动应用程序时 但在 iOS 10 上 我注意到didReceiveRemoteNot
  • reloadData 调用 numberOfSections、numberOfRows,而不是 cellForRowAtIndexPath

    首先 如果格式不正确 我很抱歉 这是第一次这样做 我已经使用 stackoverflow 来寻求帮助很长时间了 它非常有帮助 谢谢大家 但这是我第一次发布自己的问题 这个问题已经被问过很多次了 但是当我调用 myTable reloadTa
  • Swift UIToolBar 追加 UIBarButtonItem 项目

    我的语法不正确 有人知道这里缺少什么吗 我正在使用 Xcode 6 beta 3 并且尝试将工具栏项动态添加到 viewDidLoad 中的 手动添加的 工具栏 有两个问题 首先 我无法将工具栏中的项目附加到数组中 其次 虽然编译器允许我调
  • Swift:在标签背景中制作图像

    我想将标签放入带有角半径的红色矩形的图像中 条件是图像大小必须等于或略大于标签大小 为此我找到了一个类似的question https stackoverflow com questions 3037902 adding backgroun
  • iOS:适用于 iOS 的基于 Flash 的编程应用程序?

    我想知道 有没有办法支持 iOS 的基于 Flash 的编程应用程序 它可以是本机 混合或网络应用程序 我想知道 是否有可能为 iOS 设备开发基于 Flash 的应用程序 我看过论坛 到处都说这是不可能的 所以只想在开始任何开发之前确认一
  • CC Parallax 节点视差比(说明)

    我觉得问这个问题很愚蠢 但我在任何地方都找不到明确的答案 或者根本找不到答案 所以我觉得我必须问 有没有人可以清楚地解释 CCParallaxNode 的 parallaxRatio 是如何工作的 我检查了CCParallaxNode的来源
  • 是否可以在 iOS 上确保 oauth 安全?

    是否可以在 iOS 上确保 oauth 安全 我正在调查OAuth 2 0 http tools ietf org pdf draft ietf oauth v2 12 pdf作为一种为 iOS 应用程序 套件 实现单点登录 授权的方法 为
  • AVAssetExportSession.requestExportSession 回调从未被调用(swift 3,iOS10)

    以下代码从不调用导出回调 导出会话创建得很好 我没有看到任何错误 也没有任何进展 CPU 为 0 我认为没有例外 状态为 1 进行中 进度为 0 错误为零 视频在画廊中播放 我可以成功获取视频的图像 我已将代码提取到单个 UIViewCon
  • 跨平台 IAP

    我已在 iOS 和 Android 中集成了应用内购买 自动续订订阅 两者都工作正常 我对使用跨平台验证 IAP 有一定的疑问 例如 当多个用户登录一个应用程序时 某一特定应用程序的订阅如何运作 例如 如果用户 A 有标准套餐并且从应用程序
  • 我们可以在 Objective-C 中创建可空/非空属性吗?

    我们可以在 Objective C 中创建可空 非空属性吗 如果可以 那么如何创建 您可以使用 Nullable and Nonnull预选赛 property copy nullable NSString name property co
  • 将 GestureRecogniser 附加到多个图像视图

    今天我在将相同的手势识别器附加到多个图像视图时遇到了一些奇怪的事情 它仅附加到最后一个视图 换句话说 它只能附加到一个视图 我必须创建多个手势识别器才能满足我的要求 以下是我所做的 我做的对吗 这是将识别器附加到多个图像视图的唯一方法吗 请

随机推荐

  • 我应该使用 cocos2D 还是 andengine?

    什么项目比较活跃 稳定 你能告诉我cocos2D和andengine之间的深层区别吗 我肯定会选择Andengine Android 版 Cocos2D 的 bug 还太多
  • VFR-Reader 在 iOS8 中崩溃

    我测试了一个当前正在 iOS8 上使用 VFR Reader Core 的应用程序 当我尝试从中打开 PDF 时 我完全崩溃了 我是唯一一个有这个问题的人吗 知道我可以在哪里搜索来纠正这个问题吗 这是崩溃报告 https gist gith
  • 会话 Cookie 与持久 Cookie

    我了解持久 cookie 与会话 cookie 的正常应用 但是 如果您可以指定会话 cookie 的过期时间 使其表现得像持久 cookie 反之亦然 除了对用户进行混淆并将会话存储在服务器上之外 使用会话 cookie 是否还有其他好处
  • window.opener 为 null(iOS 12.3.1 Safari 和 Chrome)

    有一个target blank关联 链接页面中的脚本使用window opener 这已经工作了很多年 但现在它在 iOS 上被破坏了 因为window opener is null 我能做些什么 有很多旧的 一些very旧 window
  • 是否可以在 C# 中创建一个新的运算符?

    我知道你可以重载现有的运算符 我想知道是否可以创建一个新的运算符 这是我的场景 我要这个 var x y lt z y z 相当于 var x y
  • 从 Stripe 账户转账到其他账户

    我用它来向连接的帐户收费 然后将钱发送到另一个帐户 但我不断收到此错误消息 我不断收到此错误消息 您不能提供destination向连接的帐户收费时 return stripe charges create amount 1000 curr
  • VueJS:如何滚动 v-list-title

    使用 v list 制作列表屏幕时 我卡住了滚动 v list title 项目 我正在使用 VueJS 和 vuetifyjs 我的代码片段如下 https codepen io badsaarow pen aaRaxe editors
  • 如何直接从测试驱动程序调用自定义 Django manage.py 命令?

    我想为 Django manage py 命令编写一个单元测试 该命令对数据库表执行后端操作 如何直接从代码调用管理命令 我不想从tests py 在操作系统的shell 上执行命令 因为我无法使用使用manage py test 设置的测
  • 更改 Alembic 中的主键?

    我已读完the docs http alembic readthedocs org en latest ops html 但我在任何地方都找不到这方面的说明 我尝试删除旧密钥并添加新密钥 但这会导致错误 op drop constraint
  • Pandas:根据行值删除重复项

    我有一个数据框 我想根据不同的条件删除重复项 A B 0 1 1 0 1 1 1 0 2 2 2 0 3 2 2 0 4 3 3 0 5 4 4 0 6 5 5 0 7 5 1 8 5 1 9 5 3 我想删除 A 列中除带有 的行之外的所
  • 返回带有 ember-data find() 和多个参数的单个记录

    我正在尝试对除 id 之外的其他参数 实际上是两个参数 进行查找 使用 ember data 但我得到的只是 Uncaught Error assertion failed Your server returned a hash with
  • HTML 表单上的默认提交按钮是如何确定的?

    如果提交表单但未通过任何特定按钮提交 例如 by pressing Enter using HTMLFormElement submit in JS 浏览器如何确定使用多个提交按钮 如果有 中的哪一个作为按下的按钮 这在两个层面上具有重要意
  • TabLayout选项卡样式

    我用新的TabLayout from com android support design图书馆 我想更改选定 未选定选项卡的背景 我查看来源 只发现tabBackground更改所有选项卡颜色但不控制选定选项卡颜色的属性 如何控制选定 未
  • 检查 INTENT 互联网连接

    有安卓的吗Intent ACTION XXX当互联网连接可用时通知我 我想实例化一个BroadcastReceiver当用户启用互联网连接 通过 wifi GSM 等 时通知我的应用程序 有人可以帮助我吗
  • 我如何知道我正在使用什么 CLR?

    是否有信息可以告诉我正在使用的 NET 版本以及它是否是 NET 2 0 SP1 Thanks 您可以使用Environment Version http msdn microsoft com en us library system en
  • 如何使用 Vaadin CDI 和 Navigator 实现 MVP?

    我想使用 Vaadin 在我的 Web 应用程序中实现 MVP 模式 我正在使用 Vaadin Navigator 和 CDIViewProvider 如下所示 MyUI java public class MyUI extends UI
  • 如何在 Linux 中重新定义 malloc() 以在 C++ new 中使用

    我为我定义了 mem malloc 和 mem free 我想用它们来替换 malloc 和 free 以及 C 的 new 和 delete 我将它们定义如下 extern C extern void mem malloc size t
  • 将 s3 上的多个 zip 文件合并为更少的 zip 文件

    我们遇到一个问题 其中 s3 目录中的某些文件的大小约为 500MiB 但许多其他文件的大小为 KiB 和字节 我想将所有小文件合并成更少的大约 500MiB 的大文件 在 s3 文件夹中重写数据的最有效方法是什么 而不必下载 在本地合并并
  • 如何获取 ADF2 中动态内容中一个月的最后一天?

    我想根据 utcnow 时间戳获取一个月的最后一天 下面表达式中的 dd 应该自动为该月的最后一天 28 30 或 31 formatDateTime adddays utcnow 2 yyyy MM ddT23 59 59 999 考虑到
  • 如何使用 CNContactPickerViewController 使用一组电话号码来过滤联系人?

    我尝试使用一组现有电话号码从地址簿中过滤一些联系人 CNContactPickerViewController当这些联系人的电话号码与现有电话号码匹配时 应禁止选择这些联系人 我需要使用电话号码作为过滤器 因为这些电话号码可能来自其他应用程