我正在使用Swift从AddressBook中提取数据。如果我使用Debug构建应用程序,一切正常。但是,如果我使用发布配置构建应用程序,它会在此函数中崩溃:
private func extractProperty<T>(record:ABRecord, propertyName : ABPropertyID) -> T? {
return ABRecordCopyValue(record, propertyName)?.takeRetainedValue() as? T
}
经过一些测试后,当我尝试检索联系人没有的“middleName”时,我发现它崩溃了。我将链条分开以确定它在哪里崩溃,结果发现它在takeRetainedValue()
中崩溃了。因此即使ABRecordCopyValue
没有返回值,Swift仍然认为它是并且沿着可选链传递它。我已经尝试了各种测试nil
的方法,但似乎没有任何效果。
但这只发生在发布版本中。不是调试版本。
有关如何解决此问题的任何想法?
答案 0 :(得分:1)
所以我决定尝试在Swift 1.2(Xcode 6.3)下构建它,它可以工作(花了大约一个小时来转换项目)。所以它肯定是一个编译器错误,已在最新的Swift中得到修复。