在 Swift 中从 iPhone 加载联系人会崩溃

2024-02-28

我正在尝试加载我的应用程序的联系人。它在模拟器中运行良好。但在 iPhone 上却崩溃了。 我正在使用的代码:

func getContactNames()
    {
    let allContacts = ABAddressBookCopyArrayOfAllPeople(addressBookRef).takeRetainedValue() as Array
    for record in allContacts {
        let currentContact: ABRecordRef = record
        let currentContactName = ABRecordCopyCompositeName(currentContact).takeRetainedValue() as String
        if(currentContactName != "") {
                println("found \(currentContactName).")
        }
    }
}

此功能正确,在获得少量联系人后,应用程序崩溃并显示日志:

fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)

我认为这是由于联系人中的姓名所致,如果我尝试获取电话号码,它工作正常。我可以看到所有电话号码,但对于姓名,我可以看到大约 350 个联系人,然后应用程序崩溃。

知道我该如何解决这个问题吗?


要考虑潜在的零值(当联系人的记录缺少姓名时可能会发生这种情况),请更改

let currentContactName = ABRecordCopyCompositeName(currentContact).takeRetainedValue() as String

to

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

在 Swift 中从 iPhone 加载联系人会崩溃 的相关文章

随机推荐

  • Kotlin - 如何在子类中返回“自身类型”? (不带扩展功能)

    让我们来学习这些课程 class A fun foo A this class B A fun bar 现在我希望 Kotlin 能够检测到我何时调用foo on B 然后给我输入的结果B 这样我就可以写 B foo bar 对于 kotl
  • javascript setInterval 的内存泄漏

    这两种说法有什么区别吗 setInterval animateImage 1000 or setInterval animateImage 1000 浏览器 js 引擎是否会以任何不同的方式解释第二个语句 从而可能导致内存泄漏或性能问题 情
  • 由于不同的病毒扫描程序导致 Microsoft Visual Studio 速度变慢

    与 Microsoft Visual Studio 一起使用的最慢的病毒扫描程序是什么 由于我的病毒检查器 我刚刚让 Microsoft Visual Studio 再次 变慢 数百个项目 其中一些包含超过 100 个 C 文件 因此任何减
  • 如何通过按 Enter 退出 while 循环?

    I am trying to get a while loop to break by pressing the Enter key on a keyboard My code is package javaapplication4 imp
  • Android Espresso 执行长按而不是单击

    onData anything inAdapterView withId R id ScheduleOrderListViewListView atPosition 0 perform click 50 的时间执行长触摸 有没有好的解决方法
  • 用于收集对象的 Rails 模型类方法

    我在编写用于集合的类方法时遇到问题ActiveRecord对象 在过去的几个小时里 我已经两次遇到这个问题 这似乎是一个简单的问题 所以我知道我错过了一些东西 但我无法在其他地方找到答案 Example class Order lt Act
  • 无法在设备上调试应用程序

    我的所有设备都工作正常 这个特定的设备是三星的 但没有 当我插入手机时 手机会显示在 DDMS 设备列表中 但是 没有任何应用程序 进程出现 这是唯一发生这种情况的设备 是的 USB 调试已启用 是的 debuggable 在清单中设置为
  • css嵌入无滚动条

    好吧 我有一个带有 ajax 按钮的页面 当您点击 ajax 按钮时 它会将一个嵌入对象扔到 data div 中 一切正常 我的问题是嵌入正在创建一个我不想要的滚动条 关于如何防止滚动条有什么想法吗 我已经尝试过在任何地方都可以抛出 ov
  • Webgl使用视口+剪刀更新区域

    我一直在尝试创建一个多视口 webgl 应用程序 对于每个视图 我使用视口 剪刀将所有内容渲染得非常好 但现在我想改进渲染并只渲染更新的视图 因此跳过过度绘制 我做了一个小演示来展示这个想法 http kile stravaganza or
  • LIMIT then RAND 而不是 RAND then LIMIT

    我正在使用全文搜索来提取行 我根据分数对行进行排序 ORDER BY SCORE 然后在前 20 行 LIMIT 20 中 我想对结果集进行兰特 RAND 操作 因此 对于任何特定的搜索词 我想随机显示前 20 个结果中的 5 个 我的解决
  • MSI 安装程序错误 2810 中断安装,但仍然顺利完成

    我创建了一个安装应用程序的设置 并且仍然如此 但它最后开始突然发出奇怪的警告 因此 当安装过程完成时 会出现以下内容 安装程序在安装此软件包时遇到意外错误 这可能表明此包有问题 错误代码是2810 于是我查了2810 上面写着 在对话框 2
  • Angularjs 1.7.9 - 可能未处理的拒绝[重复]

    这个问题在这里已经有答案了 我经常遇到这个错误Possibly unhandled rejection即使在使用时 promise then success err or promise then success catch err 我应该
  • Oracle 12c - “number”列上的索引比“varchar”列上的索引执行得更快吗?

    假设我在 Oracle 12c 中有一个表 其中包含以下列 create table t1 a number 5 0 b varchar 5 0 d e 然后我在具有相同值的两列中插入 100 000 000 条记录 例如 20151 an
  • 将 Android Studio 项目与 Gradle 文件同步

    I was working on a project and then I got a prompt to update Android Studio After I did that I started getting this erro
  • 如何以编程方式触发浏览器的搜索?

    我喜欢做的是通过 JavaScript 以编程方式触发浏览器的页面搜索功能 I e when a page is loaded and the the user presses Ctrl F a search field is opened
  • JobStorage.Current 属性值尚未初始化。您必须在使用 Hangfire 客户端或服务器 API 之前设置它

    我在 mvc 应用程序中使用hangfire 我正在向用户发送提醒 预约 我已经在我的应用程序中安装了hangfire 我已经配置了hangfire 启动 cs 类 但是当我运行该应用程序时 它会产生以下错误 作业存储 当前属性值尚未初始化
  • Python中快速嵌套列表的意外更新结果[重复]

    这个问题在这里已经有答案了 为什么下面不能更新第一个元素而是整列 gt gt gt x 2 2 1 gt gt gt x 1 1 1 1 gt gt gt x 0 0 2 gt gt gt x 2 1 2 1 即使这是明显的重复但使用ran
  • Android:ListView.getScrollY() - 它有效吗?

    我正在使用它 但它总是返回 0 即使我已经滚动到列表末尾 getScrollY 实际上是View上的方法 而不是ListView上的方法 它指的是整个视图的滚动量 所以它几乎总是0 如果你想知道ListView的内容滚动了多远 可以使用li
  • 气球弹出 WPF

    我需要显示一个气球弹出窗口 WPF中有针对此类工作的控件吗 像下面这样
  • 在 Swift 中从 iPhone 加载联系人会崩溃

    我正在尝试加载我的应用程序的联系人 它在模拟器中运行良好 但在 iPhone 上却崩溃了 我正在使用的代码 func getContactNames let allContacts ABAddressBookCopyArrayOfAllPe