С помощью ABAddressBook, когда я хотел, чтобы у пользователя была возможность «Создать новый контакт» и «Добавить к существующему контакту» для контакта, которого он раньше не видел, я создавал и представлял ABUnknownPersonViewController
.
Я не могу найти способ воспроизвести эту функциональность в рамках CNContacts. Мне казалось, что CNContactViewController(forUnknownContact: contact)
может работать, но, к сожалению, это позволяет пользователю только «Отправить сообщение» или «Поделиться контактом».
Как разрешить пользователю сохранять контакт в своей адресной книге как новый контакт или как часть существующего в CNContacts?
func presentContact() {
let status = CNContactStore.authorizationStatusForEntityType(.Contacts)
switch status {
case .Authorized: ()
case .NotDetermined: requestAccess()
case .Denied, .Restricted: accessDenied()
}
print("authorized? \(status == .Authorized)") //prints "authorized? true"
let unknown = CNContactViewController(forUnknownContact: contact!)
unknown.delegate = self
self.navigationController?.pushViewController(unknown, animated: false)
}
Даже когда я пытаюсь запросить доступ, пользователь все равно не может сохранить контакт.
contact
? Покажите строку, в которой вы установилиunknown
contactStore
. Все эти вещи важны. ПОКАЗАТЬ. ТВОЙ. НАСТОЯЩИЙ. КОД. - person matt   schedule 28.08.2016contact
— это произвольноеCNContact
с любым набором свойств. Я не уверен, как это может повлиять на то, что кнопки действий не отображаются. Здесь есть все, кроме установленного свойстваunknown
contactStore
, что и является проблемой. Спасибо за вашу помощь. Извините, если я срезал некоторые углы при создании минимального воспроизводимого примера; Я старался сделать его максимально простым и понятным. - person 5813   schedule 28.08.2016contactStore
правильно решила проблему. - person 5813   schedule 28.08.2016