加载联系人崩溃iOS 10 Swift

时间:2016-11-26 17:25:12

标签: ios swift contacts

我正在尝试访问并加载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并制作一个新的?

1 个答案:

答案 0 :(得分:0)

checkAccessStatus移至您的Contact Controller并再次尝试此方法?