Swift Crash从地址簿中提取记录值

时间:2015-02-11 13:35:07

标签: swift abaddressbook

我正在使用Swift从AddressBook中提取数据。如果我使用Debug构建应用程序,一切正常。但是,如果我使用发布配置构建应用程序,它会在此函数中崩溃:

private func extractProperty<T>(record:ABRecord, propertyName : ABPropertyID) -> T? {
  return ABRecordCopyValue(record, propertyName)?.takeRetainedValue() as? T
}

经过一些测试后,当我尝试检索联系人没有的“middleName”时,我发现它崩溃了。我将链条分开以确定它在哪里崩溃,结果发现它在takeRetainedValue()中崩溃了。因此即使ABRecordCopyValue没有返回值,Swift仍然认为它是并且沿着可选链传递它。我已经尝试了各种测试nil的方法,但似乎没有任何效果。

但这只发生在发布版本中。不是调试版本。

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

所以我决定尝试在Swift 1.2(Xcode 6.3)下构建它,它可以工作(花了大约一个小时来转换项目)。所以它肯定是一个编译器错误,已在最新的Swift中得到修复。