2015-11-09 3 views
0

Я работаю над проектом в Swift 2.0, который требует от меня использовать IOS 9s ContactUI Framework. Проблема, которую я получаю, правильно выбирает номер телефона из списка контактов. Когда я выбираю номер телефона из контакта, приложение аварийно завершает работу.Swift 2.0 ContactsUI Framework

Вот код, который я использую для выполнения этой задачи.

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 
+0

Аварии как? На какой строке и с каким сообщением? – matt

+0

Это ошибка, которую я получаю с консоли Error Domain = _UIViewServiceInterfaceErrorDomain Code = 3 "(null)" UserInfo = {Сообщение = соединение службы прерывается} – bradosev

+0

Это в симуляторе? – matt

ответ

1

Проблема в том, что нажатие на номер телефона пытается набрать телефон - и на симуляторе телефона нет.

Ваш contactPicker:didSelectContactProperty: никогда не будет вызван, потому что номер телефона никогда не будет выбран. Вместо этого, нажимая номер телефона, вы попытаетесь набрать этот номер. Это связано с тем, что вы не предоставили predicateForSelectionOfProperty. Вам необходимо установить predicateForSelectionOfProperty в NSPredicate, который оценивается как true, когда key является номером телефона.

+0

Итак, что я должен изменить в своем коде? – bradosev

+0

Подумайте о том, что я вам говорю. Без NSPredicate, который возвращает «true», когда ключ является номером телефона, вы не сможете выбрать номер телефона. Теперь напишите этот предикат и установите для него 'predicateForSelectionOfProperty'. – matt