You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:41:54