我正在尝试访问并加载iOS 10上的所有联系人;但是,每次控制器加载时我的应用程序都会崩溃。我刚刚将我的项目从Swift 2转换为Swift 2.3(它正在使用Swift 2)。我还在info.plist中添加了联系人隐私用法,但这并没有解决问题。这是我的代码:
我从在线教程中发现了这个请求访问:
func checkAccessStatus(completionHandler: (accessGranted: Bool) -> Void) {
let authorizationStatus = CNContactStore.authorizationStatusForEntityType(CNEntityType.Contacts)
switch authorizationStatus {
case .Authorized:
completionHandler(accessGranted: true)
case .Denied, .NotDetermined:
self.accessStore.requestAccessForEntityType(CNEntityType.Contacts, completionHandler: { (access, accessError) -> Void in
if access {
completionHandler(accessGranted: access)
} else {
print("access denied")
print(accessError)
}
})
default:
completionHandler(accessGranted: false)
}
}
我一直收到这个错误: “可选(错误域= CNErrorDomain代码= 100”访问被拒绝“UserInfo = {NSLocalizedDescription =拒绝访问,NSLocalizedFailureReason =此应用程序未被授予访问联系人的权限。}”
上面的代码是我的控制器中发生错误的剪切器。我试图请求访问但它一直在失败。我是否需要执行其他步骤来接收联系人的访问权限?当我加载页面时,我没有得到一个请求权限的弹出框(即使我在info.plist中添加了隐私位用于联系人使用)。我还检查了隐私设置&看看我是否禁用了该应用对联系人的访问权限;然而,它没有显示。我感谢任何帮助,谢谢!
更新:我发现了这个问题,这似乎是一个类似的问题(尽管它是iOS 9)here。如何删除我的info.plist并制作一个新的?
答案 0 :(得分:0)
将checkAccessStatus
移至您的Contact Controller并再次尝试此方法?