1

我从通讯录中找到了一个联系人

现在我需要在同一个视图控制器中向文本视图 UI 显示名称。

如何从 ABRecord 中提取名称?

这是我的代码。

@IBAction func addContact(sender: AnyObject) {
    var peoplePicker = ABPeoplePickerNavigationController()
    peoplePicker.peoplePickerDelegate = self
    self.presentViewController(peoplePicker, animated: true, completion: nil)

}

func peoplePickerNavigationControllerDidCancel(peoplePicker: ABPeoplePickerNavigationController!) {
    dismissViewControllerAnimated(true, completion: nil)
}


func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, didSelectPerson person: ABRecord!) {

    var name : String! = ABRecordCopyCompositeName(person)
}

这里函数 ABRecordCopyCompositeName 返回非托管我不能强制转换为字符串。它说不可兑换。

我是 iOS 开发新手。请帮忙。

4

2 回答 2

4

使用 takeUnretainedValue() 和 takeRetainedValue() 获取 CFString 对象并将其转换为 NSString

func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, didSelectPerson person: ABRecord!) {
    let nameCFString : CFString = ABRecordCopyCompositeName(person).takeRetainedValue()
    let name : NSString = nameCFString as NSString
}
于 2014-12-13T12:39:05.907 回答
-2

您还可以检查KBContactsSelection,它允许您搜索和选择多个联系人,并且可以使用优雅的Builder Pattern轻松自定义。

KBContacts选择画面

于 2014-12-20T09:11:35.370 回答