2016-07-07 142 views
8

只要它试图请求访问CNContactStore,我的代码就会崩溃。任何想法,如果这是一个测试版问题?Swift 3/Xcode 8 - CNContact [access] <Private>

var addressBookStore = CNContactStore() 

addressBookStore.requestAccess(for: .contacts) { (granted, error) 

//这个控制台消息触发的崩溃 - 斜挎[836:1175155] [进入]私人

发生崩溃,在这条线,甚至连防止印刷错误!

在此先感谢

回答

21

由于这里建议:https://developer.apple.com/reference/contacts

重要

的iOS应用链接上或iOS 10.0后,必须在它的Info.plist 文件的使用说明它需要的数据类型的密钥 访问或它会崩溃。要特别访问联系人数据,它必须包含NSContactsUsageDescription 。

你必须ADDD NSContactsUsageDescription关键在你Info.plist文件

enter image description here

然后你会得到授权对话框。没有这个关键的应用程序会崩溃

enter image description here

let addressBookStore = CNContactStore() 

addressBookStore.requestAccess(for: CNEntityType.contacts) { (isGranted, error) in 
    print(isGranted) 
    print(error) 
} 
+3

这样一个简单的解决方案。我不相信我错过了!非常感谢 – InfinitePod

+1

惊人的提示! TY! –