ユーザーの連絡先にアクセスしたいと考えています.Appleが提供している連絡先とContactsUIフレームワークを使用する予定です。Swiftの連絡先へのアクセスを要求する3
まず、ユーザーの連絡先にアクセスする許可を求める必要がありますが、問題が発生しています。
func requestForAccess(completionHandler: (accessGranted: Bool) -> Void) {
let authorizationStatus = CNContactStore.authorizationStatusForEntityType(CNEntityType.Contacts)
switch authorizationStatus {
case .Authorized:
completionHandler(accessGranted: true)
case .Denied, .NotDetermined:
self.contactStore.requestAccessForEntityType(CNEntityType.Contacts, completionHandler: { (access, accessError) -> Void in
if access {
completionHandler(accessGranted: access)
}
else {
if authorizationStatus == CNAuthorizationStatus.Denied {
dispatch_async(dispatch_get_main_queue(), {() -> Void in
let message = "\(accessError!.localizedDescription)\n\nPlease allow the app to access your contacts through the Settings."
self.showMessage(message)
})
}
}
})
default:
completionHandler(accessGranted: false)
}
}
が、私はそうのようスウィフト3に変換しようとしたが、それでもエラーを考え出すています:スウィフト2では、1はそのように許可を求めることができます。
func requestForAccess(completionHandler: @escaping (_ accessGranted: Bool) -> Void) {
let authorizationStatus = CNContactStore.authorizationStatus(for: CNEntityType.contacts)
switch authorizationStatus {
case .authorized:
completionHandler(true)
case .denied, .notDetermined:
self.contactStore.requestAccess(for: CNEntityType.contacts, completionHandler: { (access, accessError) -> Void in
if access {
completionHandler(access)
}
else {
if authorizationStatus == CNAuthorizationStatus.denied {
DispatchQueue.async(group: DispatchQueue.main, execute: {() -> Void in //error here
let message = "\(accessError!.localizedDescription)\n\nPlease allow the app to access your contacts through the Settings."
self.showMessage(message)
})
}
}
})
default:
completionHandler(false)
}
}
誰もがこの問題を解決しようとする助けることができる:;「あなたの代わりに、この型の値を使用することを意味したインスタンスメンバー 『非同期は』タイプ 『DispatchQueue』で使用することはできません?」エラーがありますか?どんな助けも非常に高く評価されます。ありがとうございました。
乾杯、 テオ
ます。https:// stackoverflowの連絡先へのアクセスは、アプリが正常に動作するため、真に必要不可欠である場合
は、あなたがそれらにそれらをあなたのアプリから直接設定に行くのオプションを与える警告を表示することができます。 com/questions/37801370/how-do-i-dispatch-sync-dispatch-async-dispatch-after-swift-3 – dan
どのエラーが表示されていますか? – GIJOW
"まだエラーが出ています"という質問はありません。 「エラー」とは何か、またどの行にあるのかを明確に述べてください。また、誰もStack Overflowの前にSwift 3で連絡先アクセスを許可する方法について議論したことはありませんか?尋ねる前に検索してみてください。帯域幅を節約する。 – matt