【发布时间】:2014-11-26 08:11:36
【问题描述】:
我正在获取我的 iOS 通讯录联系人,并将它们存储在一个名为 contacts[] 的数组中。
这是我的方法:
var contacts: [String] = []
func getContactNames() {
if !self.determineStatus() {
println("not authorized")
return
}
let people = ABAddressBookCopyArrayOfAllPeople(adbk).takeRetainedValue() as NSArray as [ABRecord]
for person in people {
self.contacts.append(ABRecordCopyCompositeName(person).takeRetainedValue())
}
}
这很好用,我将它们显示在一个不错的 UITableView 中。它在模拟器(iOS 8.1)中运行良好,但在我的 iPhone 上运行良好。
在我的手机上,我收到了著名的错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
问题是我在这里没有使用可选项。经过不同的测试,我发现只有当我的联系人列表中的联系人超过 26 个时才会出现此错误。
很奇怪,26 也是字母表中的字母数,所以我正在朝那个方向搜索。
你有什么线索吗?我会很感激你的帮助。谢谢
PS:在调试屏幕中,它似乎来自这一行:
let people = ABAddressBookCopyArrayOfAllPeople(adbk).takeRetainedValue() as NSArray as [ABRecord]
【问题讨论】:
-
有什么发现吗?有同样的问题
-
使用 iOS9 浏览联系人的方式完全改变了。有一个名为 Contacts 的新框架,它取代了旧的地址簿框架。 Doc here