ios – CNContactViewController()的“创建新联系人”和“添加到现有联系人”

使用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)

}

即使我尝试请求访问,用户仍然无法保存联系人.

解决方法

你一直没有显示真实的代码,所以无法帮助你.所以我失去了兴趣.我只会告诉你我的真实代码然后让你去研究它并思考我正在做什么和你在做什么之间的区别.这是实际的工作代码;你们去做同样的事:
let con = CNMutableContact()
con.givenname = "Johnny"
con.familyName = "Appleseed"
con.phoneNumbers.append(CNLabeledValue(
    label: "woods",value: CNPhoneNumber(stringValue: "555-123-4567")))
let unkvc = CNContactViewController(forUnkNownContact: con)
unkvc.message = "He kNows his trees"
unkvc.contactStore = CNContactStore()
unkvc.delegate = self
unkvc.allowsActions = false
self.navigationController?.pushViewController(unkvc,animated: true)

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...