Swift CNContactRequestAccess线程
我有获取身份验证状态的函数。但无论何时.notDetermined->我都会发送请求访问以获得权限。 问题是函数返回bool,然后请求权限。我认为线程的问题,我如何处理它Swift CNContactRequestAccess线程,swift,multithreading,cncontact,Swift,Multithreading,Cncontact,我有获取身份验证状态的函数。但无论何时.notDetermined->我都会发送请求访问以获得权限。 问题是函数返回bool,然后请求权限。我认为线程的问题,我如何处理它 class func AskForPermission() -> Bool { var result = false let authStatus = CNContactStore.authorizationStatus(for: .contacts) switch aut
class func AskForPermission() -> Bool {
var result = false
let authStatus = CNContactStore.authorizationStatus(for: .contacts)
switch authStatus{
case .notDetermined:
let contactStore = CNContactStore.init()
contactStore.requestAccess(for: .contacts, completionHandler: { (success, nil) in
if success {
result = true
} else {
result = false
}
})
case .authorized:
result = true
default:
result = false
}
print(result)
return result
}
使用Closer而不是返回布尔值
'func AskForPermission(completionHandler:@escaping (_ autherizationStatus:Bool)->Void){
let authStatus = CNContactStore.authorizationStatus(for: .contacts)
switch authStatus{
case .notDetermined:
let contactStore = CNContactStore.init()
contactStore.requestAccess(for: .contacts, completionHandler: { (success, nil) in
DispatchQueue.main.async {
if success {
completionHandler(true)
} else {
completionHandler(false)
}
}
})
case .authorized:
completionHandler(false)
break
default:
completionHandler(false)
break
}
}'
像这样调用这个函数
'AskForPermission(completionHandler: { (isAuthorized) in
if isAuthorized{
// Do your Work here....
}
})'
使用Closer而不是返回布尔值
'func AskForPermission(completionHandler:@escaping (_ autherizationStatus:Bool)->Void){
let authStatus = CNContactStore.authorizationStatus(for: .contacts)
switch authStatus{
case .notDetermined:
let contactStore = CNContactStore.init()
contactStore.requestAccess(for: .contacts, completionHandler: { (success, nil) in
DispatchQueue.main.async {
if success {
completionHandler(true)
} else {
completionHandler(false)
}
}
})
case .authorized:
completionHandler(false)
break
default:
completionHandler(false)
break
}
}'
像这样调用这个函数
'AskForPermission(completionHandler: { (isAuthorized) in
if isAuthorized{
// Do your Work here....
}
})'
谢谢你的回复!如何使用此功能?例如
if!AskForPermission(){return nil}
非常感谢!它起作用了。我需要仔细考虑一下谢谢你的回复!如何使用此功能?例如if!AskForPermission(){return nil}
非常感谢!它起作用了。我需要考虑一下关闭