0

我正在开发一个需要使用 IOS 9s ContactUI 框架的 Swift 2.0 项目。我遇到的问题是从联系人列表中正确选择电话号码。当我从联系人中选择电话号码时,应用程序崩溃。

这是我用来执行此任务的代码。

var delegate: NewLocationViewControllerDelegate!
var contacts = [CNContact]()

override func viewDidLoad() {
    super.viewDidLoad()
    UIApplication.sharedApplication().delegate as! AppDelegate
    // Do any additional setup after loading the view.
}//end

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func openContacts(sender: UIButton) {
    let contactPicker = CNContactPickerViewController()
    contactPicker.delegate = self;
    contactPicker.displayedPropertyKeys = [CNContactPhoneNumbersKey]

    self.presentViewController(contactPicker, animated: true, completion: nil)
}//end

func contactPicker(picker: CNContactPickerViewController, didSelectContactProperty contactProperty: CNContactProperty) {
    let contact = contactProperty.contact
    let phoneNumber = contactProperty.value as! CNPhoneNumber
    print(contact.givenName)
    print(phoneNumber.stringValue)
}//end
4

1 回答 1

1

问题是电话号码上的水龙头试图拨打电话 - 而在模拟器上,没有电话。

contactPicker:didSelectContactProperty:将永远不会被呼叫,因为永远不会选择电话号码。相反,点击电话号码将尝试拨打该号码。这是因为您没有提供predicateForSelectionOfProperty. 您需要将 设置predicateForSelectionOfProperty为 NSPredicate ,以评估true何时key是电话号码。

于 2015-11-09T04:30:48.707 回答