Я пытаюсь получить CNContact. Но проблема в том, что CNContactStore.CNContactStore.authorizationStatusForEntityType не . Авторизованный в любое время.CNContactStore.CNContactStore.authorizationStatusForEntityType нет. Авторизованный
import Contacts
import ContactsUI
class ContactViewController: UIViewController
var store = CNContactStore()
override func viewDidLoad() {
checkPermission()
}
func checkPermission(){
switch CNContactStore.authorizationStatusForEntityType(.Contacts){
case .Authorized:
let cnt = findContacts()
print(cnt.count)
case .NotDetermined:
store.requestAccessForEntityType(.Contacts){succeeded, err in
guard err == nil && succeeded else{
return
}
let cnt = findContacts()
print(cnt.count)
}
default:
print("Not Handled")
}
}
func findContacts() -> [CNContact] {
let keysToFetch = [CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName),
CNContactImageDataKey,CNContactEmailAddressesKey,CNContactUrlAddressesKey,CNContactNoteKey,
CNContactPhoneNumbersKey,CNContactPostalAddressesKey]
let fetchRequest = CNContactFetchRequest(keysToFetch: keysToFetch)
fetchRequest.unifyResults = true
var contacts = [CNContact]()
do {
try store.enumerateContactsWithFetchRequest(fetchRequest, usingBlock: { (let contact, let stop) -> Void in
contacts.append(contact)
})
}
catch let error as NSError {
print(error.localizedDescription)
}
return contacts
}
}
в пределах checkPermission() метод findContacts() не называется ever.That означает печать (cnt.count) нет печати. Но почему. Чтобы получить разрешение на авторизацию, какой будет идеальный код?
Если я называю findContacts() метод из viewDidLoad без checkPermission() метод, то приложение повешен на код ниже
try store.enumerateContactsWithFetchRequest(fetchRequest, usingBlock: { (let contact, let stop) -> Void in
contacts.append(contact)
})
Недавно я сделал это. Но не получилось. Я также использую этот код, но не работал let store = CNContactStore() if CNContactStore.authorizationStatusForEntityType (.Contacts) == .NotDetermined { store.requestAccessForEntityType (.Contacts, completeHandler: {(разрешено: Bool, ошибка: NSError ?) -> Пустота в если разрешено { печать ("A") } }) } еще если CNContactStore.authorizationStatusForEntityType (.контакты) == .Authorized { печать ("A") } –