Swift4中如何将字符转换为字符串?联系人姓名获取问题
解决Swift中联系人姓名获取类型不匹配的问题
嘿,我一眼就发现你代码里的问题啦!你现在没必要去遍历contact.givenName——因为CNContact的givenName属性本身就是String类型,你用for循环去遍历它,反而会把完整的字符串拆成单个的Character字符,这就是为啥你拿到的是字符而不是完整姓名的原因。
直接修改代码,去掉多余的循环,直接获取givenName就能得到字符串类型的姓名了:
func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]) { contacts.forEach { contact in // givenName本身就是String类型,直接赋值即可 let contactName = contact.givenName nameLabel.text = contactName print(contactName) } }
如果想要获取联系人的完整姓名(名+姓组合),可以这样拼接:
func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]) { contacts.forEach { contact in let fullName = "\(contact.givenName) \(contact.familyName)" nameLabel.text = fullName print(fullName) } }
简单划个重点:
CNContact.givenName和familyName都是原生的String类型,不需要额外遍历或转换- 遍历字符串会返回单个Character,这就是你之前得到字符类型的根源
内容的提问来源于stack exchange,提问作者user9050369
相关产品推荐
相关产品推荐

