ABAddressBookGetPersonCount 在 iOS 中返回 -1

2024-01-21

我遇到了 ABAddressBookGetPersonCount 返回 -1 的情况。测试人员向我保证地址簿中确实存在联系人。所有手机均运行 iOS 6.0.1。

这是代码:

NSMutableDictionary *myAddressBook = [[NSMutableDictionary alloc] init];
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people  = ABAddressBookCopyArrayOfAllPeople(addressBook);
int numEntries = ABAddressBookGetPersonCount(addressBook);
if (numEntries == 0)
{
    NSString *title = NSLocalizedString(@"error", nil);
    NSString *description =  NSLocalizedString(@"error_empty_contacts", nil);
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
                                                    message:description
                                                   delegate:self
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
    [alert show];


    return;
}

NSLog(@"emails: found %d", numEntries);

我无法在我的任何手机上重现此情况,但测试人员已在 3 部手机上进行了尝试。它在 iPhone 5 上可以正常工作,但在 4 或 3 上则不行;

我找不到任何表明 -1 值含义的文档。我假设这是某种错误,但是什么呢?


在 iOS 6 下,此代码无效。您必须验证您的应用程序是否有权访问地址簿。最有可能的是,-1 表示应用程序在这些设备上没有权限(或未知的权限状态)。

从文档中ABAddressBookRequestAccessCompletionHandler:

CFErrorRef myError = NULL;
ABAddressBookRef myAddressBook = ABAddressBookCreateWithOptions(NULL, &myError);
APLViewController * __weak weakSelf = self;  // avoid capturing self in the block
ABAddressBookRequestAccessWithCompletion(myAddressBook,
  ^(bool granted, CFErrorRef error) {
    if (granted) {
        NSArray *theSmiths = CFBridgingRelease(
          ABAddressBookCopyPeopleWithName(myAddressBook,
            CFSTR("Smith")
          )
        );
        weakSelf.numberOfSmiths = [theSmiths count];
    } else {
        // Handle the error
    }
});
CFRelease(myAddressBook);

如果您需要支持 iOS 5.x 或 4.x,您需要正确检查新方法是否存在。

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

ABAddressBookGetPersonCount 在 iOS 中返回 -1 的相关文章

  • 图像目录中矢量 pdf 的渲染模式设置为模板,但 UIImageView 不会在自定义单元格中对图像进行着色

    我已将所有图像文件迁移到资产目录中 它们都是大小为 1x 的 pdf 向量 它们被设置为呈现为模板 它们的大小和颜色在任何地方都表现得很好 但是有一个来自 xib 的自定义 TableView Cell 我有 6 个 UIImageView
  • UISplitViewController - 推送模态视图

    使用 UISplitViewController 时推送模态视图的最佳实践是什么 您会从 RootViewController DetailViewController 还是直接从应用程序委托推送 理想情况下 我想要实现的功能是在基于某些条
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项
  • 如何在 Apple Watch Extension/App 和 iOS App 之间建立通信通道

    我正在探索 WatchKit SDK 当我有 WatchKit 应用程序时 是否可以在 WatchKit 应用程序上从 iPhone 应用程序设置值 例如文本 设置 我可以从 iPhone 应用程序调用 WatchKit 应用程序扩展中的函
  • 由于语言错误,Itunes Connect 无法提交

    Thats all it shows https i stack imgur com 0aZm8 png 我不确定它没有告诉我出了什么问题 it shows its linked to the language https i stack
  • Swift 3 错误:[_SwiftValue pointSize] 无法识别的选择器发送到实例

    我刚刚将我们的项目迁移到 swift 3 发现由于一个问题导致大量崩溃 由于未捕获的异常 NSInvalidArgumentException 而终止应用程序 原因 SwiftValue pointSize 发送到实例的无法识别的选择器 该
  • 暂停视频录制[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试创建一个应用程序 用户可以在其中从相机录制视频 该应用程序的功能之一必须是文件录制中的暂停 例如 用户通过按 开始 按钮开始
  • UITextFieldDelegate 与 UITextField 控件事件

    如果我想处理 UITextField 的更改 例如用户在其中键入 看起来这可以通过将委托分配给该文本字段 然后让委托实现 shouldChangeCharactersInRange 来完成 或者通过将目标添加到文本字段并处理 UIContr
  • 如何请求用户开启定位服务

    我需要我的应用程序来访问用户的当前位置 它在应用程序开始时检查用户是否已设置 如果没有 我需要应用程序显示提示以使其使用位置服务 就像警报视图一样 点击按钮 它应该会带您进入 iPhone 上的位置服务屏幕 您可以通过以下代码检查 loca
  • 如何使用 Swift 获取 YouTube 频道的所有播放列表?

    我的问题不是关于从一般频道检索视频 我只想获取该频道创建的所有 播放列表 并检索每个播放列表的缩略图 标题和视频数量 这是一个 YouTube 频道示例 正如您所看到的 有很多已创建的播放列表 截至目前 我只能获取某个频道最新上传的视频 在
  • iPhone 快照,包括键盘

    我正在寻找拍摄整个 iPhone 屏幕 包括键盘 的正确方法 我找到了一些截取屏幕的代码 CGRect screenCaptureRect UIScreen mainScreen bounds UIView viewWhereYouWant
  • PrepareForSegue之谜

    我在两个不同的 VC 中有一个prepareForSegue 方法 一个使用一个if声明 而另一个旨在使用switch 除了名称之外 代码几乎相同 这个效果很好 void prepareForSegue UIStoryboardSegue
  • 应用程序传输安全已禁用,但仍然出现 SSL 握手错误

    我在通过 HTTPS SSL 连接到 API 时遇到问题 我已经使用下面的字典完全禁用了应用程序传输安全性 ATS 尽管 SSL 证书通过了 NSCURL 的所有测试
  • 自定义 MKAnnotationView - 如何捕获触摸而不忽略标注?

    我有一个自定义 MKAnnotationView 子类 它完全按照我想要的方式显示视图 在那个视图中 我有一个按钮 我想捕获按钮上的事件来执行操作 这很好用 但是 我不希望标注被忽略或消失 基本上 触摸标注中的按钮将开始播放声音 但我想保留
  • iOS7 中“-webkit-overflow-scrolling: touch” 最初的屏幕外元素被破坏

    既然转基因种子已经发布了 我们现在可以谈谈了 看起来 iOS7 中的 webkit overflow scrolling touch 已损坏 最初不在屏幕上的元素的触摸事件不会触发 或者在某些情况下只是不可靠 这是一个例子
  • NSPredicate 的 onFormat 字符串

    我想用 id 键对数据进行排序 我如何理解格式字符串的用途NSPredicate格式 我有一个100号的帖子 我的代码 let objectIDs posts map 0 id let predicate NSPredicate forma
  • 如何通过辅助功能 API 获取当前所选文本的全局屏幕坐标。

    我需要帮助来了解字典应用程序如何在任何应用程序上按 CMD CTRL D 时显示所选文本的以下弹出对话框 我想实施 我的可可应用程序具有相同的功能 我的应用程序将在后台运行 并显示有关所选文本的一些热键的建议 我已经实现了热键捕获 我只需要
  • 在 iOS 上从 GPS 获取时间

    我正在开发一个跟踪器应用程序 该应用程序需要高精度地了解设备位置 即它使用位置服务并忽略水平精度低于 20 米的位置 CLLocation没有明确声明是否通过 GPS 确定 但是 如果水平精度为 20 米或更好 则可以认为它是来自 GPS
  • 在 UIMenuItem 上设置accessibilityLabel

    我正在尝试设置accessibilityLabel of a UIMenuItem而且似乎没有效果 无论如何 VoiceOver 只是读取项目的标题 let foo UIMenuItem title foo action selector
  • ActionScript、NetStream.Play.Failed iOS AIR 移动设备

    我正在尝试以类似于 Tiberiu Ionu Stan http stackoverflow com questions 2036107 aac mp4 not working in actionscript 3s netstream 的方

随机推荐

  • 不区分大小写的三元搜索树

    我一直在使用三元搜索树 http en wikipedia org wiki Ternary search tree有一段时间 作为数据结构来实现一个自动完成下拉组合框 这意味着 当用户输入 fo 时 将显示下拉组合框 富 食物 足球 问题
  • 线性图表中 x 轴上的多条线未显示

    我有一个单轴折线图 用户会选择year从下拉菜单中选择loan type从另一个下拉菜单 然后图表应加载 12 个月的记录annual payment and scheduled payment 两者都是线性线 仪表板 vue div cl
  • 按发布日期列出的可用.packages

    是否可以从 R 中获取 CRAN 包的发布日期 我想获取 k 个最近发布的 CRAN 软件包的列表 或者获取 dd mm yy 日期之后发布的所有软件包的列表 类似于上面的信息available packages by date html
  • 用特征名称绘制特征重要性

    在 R 中 有预先构建的函数来绘制随机森林模型的特征重要性 但在python中似乎缺少这样的方法 我在寻找一种方法matplotlib model feature importances给了我以下内容 array 2 32421835e 0
  • 查找特定 ClearCase 分支中修改的所有文件?

    有没有办法创建一个视图 为我提供在特定 ClearCase 分支中修改的所有文件的快照 例如 假设我有两个分支 product 1 0 dev product migration 1 0 dev 第二个分支被认为是升级我们的核心框架依赖项的
  • istringstream、ostringstream 和 stringstream 之间有什么区别? / 为什么不在所有情况下都使用 stringstream?

    我什么时候用std istringstream std ostringstream and std stringstream为什么我不应该使用std stringstream在每种情况下 是否存在运行时性能问题 最后 这有什么不好的地方 而
  • Springboot嵌入tomcat绑定IPV6

    我正在使用 springboot 开发rest api 当我尝试部署它自动绑定到我们不想要的ipv6的jar时 我遇到了小问题 我知道我可以使用外部tomcat 但只是为了学习 我想知道是否可以强制它绑定到 ipv4 谢谢 萨吉德 您可以使
  • IFrame 和父级之间的跨文档消息传递问题

    我有一个应用程序在 外部 页面 不同域等 的 iframe 内运行 为了允许 iframe 和父级之间进行一些基本通信 我在父级页面上加载了我的一些脚本并使用postMessage进行一些跨文档消息传递 大多数时候 这种通信会按预期进行 但
  • 为什么直接比较两个枚举时会出现错误?

    我有一些代码正在移植到新平台 它开始给我一个关于比较两个不同枚举器列表中的两个枚举器的错误 我很困惑为什么它会给我一个关于此的错误 C 规范 6 7 2 2 的枚举规范部分指出 The identifiers in an enumerato
  • TreeMap.get() 即使键存在也返回 Null

    我试图从 TreeMap 获取数据 但即使键存在它也会返回 null HashCode 和 equals 仅基于单词 可比性基于频率 public static void main TreeMap
  • Android 的 XML RPC - 无法创建 XML 解析:org.xml.sax.SaxNotRecognizedException

    我的问题正是this https stackoverflow com questions 6089432 xml rpc problem in java unable to create the xml parse org xml sax
  • Azure 是否限制传出连接

    我正在 Azure 中运行一个 VM 其中有一项服务可以发出大量传出 http 客户端调用 一段时间 大约 10 分钟 后 当服务发出大约 5000 10000 次调用时 它突然开始收到 连接被拒绝 作为对请求的响应 当在本地运行相同的服务
  • Django 1.8 操作错误:没有这样的列:

    我正在使用 django 1 8 但在添加到 models py 时遇到问题 目前是 from django db import models Create your models here class Company models Mod
  • WPF - 为什么列表框项目不填充统一网格

    我有一个列表框 其中 ItemsPanelTemplate 设置为 UniformGrid 行数 6 列数 7 我希望列表框项目填充其空间 我正在使用字典中定义的数据模板 我的模板的外部控件是一个带有 Horizo ntalAlignmen
  • 更新支持库23.2.0构建错误

    我已经将支持库更新到23 2 0 自更新以来 我在构建时收到此错误 app build intermediates data binding layout out debug values v11 values v11 xml 错误 67
  • 使用 Flask-RESTPlus 时如何接受 String 类型字段 None

    我刚刚开始使用 Flask restplus 进行开发 我不是母语人士 但我会尽力尽可能清楚地描述我的问题 我知道有一个fields模块输入flask https flask restplus readthedocs io en 0 8 3
  • 使用 jpa/hibernate 进行实体更新时出现问题

    我有一个名为 Pagina 的实体类 我想根据对实体所做的更改来更新数据库中的条目 这不起作用 我没有收到任何错误 但数据库没有更改 Entity Table name PAGINA NamedQueries NamedQuery name
  • 使用SmtpClient,并得到“目标机器主动拒绝”

    我正在尝试使用 System Net Mail 作为应用程序发送电子邮件 但出现此异常 System Net Mail SmtpException 发送邮件失败 gt System Net WebException 无法连接到远程服务器 g
  • 为什么 Json.NET 无法序列化 X509Certificate2?

    每当我尝试使用 Json NET 序列化 X509Certificate2 实例 不使用其 ISerialized 实现 但选择忽略它 时 Json NET 都会引发异常 异常消息是 System Security Cryptography
  • ABAddressBookGetPersonCount 在 iOS 中返回 -1

    我遇到了 ABAddressBookGetPersonCount 返回 1 的情况 测试人员向我保证地址簿中确实存在联系人 所有手机均运行 iOS 6 0 1 这是代码 NSMutableDictionary myAddressBook N