gpt4 book ai didi

ios - 如何在 Swift 3 中向 CNMutableContact 添加新电子邮件?

转载 作者:IT王子 更新时间:2023-10-29 05:22:20 25 4
gpt4 key购买 nike

很快 .. 我有这段代码可以添加新联系人,它一直有效,直到将我的代码转换为 Swift 3,现在它接受除电子邮件之外的所有属性,我收到两个错误:

1-Argument type 'String?' does not conform to expected type 'NSCopying'

2-Argument type 'String?' does not conform to expected type 'NSSecureCoding'

这是我尝试向联系人添加电子邮件时的代码:

    let workEmail = CNLabeledValue(label:"Work Email", value:emp.getEmail())
contact.emailAddresses = [workEmail]

有什么帮助吗?

最佳答案

在 Swift 3 中,CNLabeledValue 声明为:

public class CNLabeledValue<ValueType : NSCopying, NSSecureCoding> : NSObject, NSCopying, NSSecureCoding {
//...
}

你需要让 Swift 能够推断 ValueType,它符合 NSCopyingNSSecureCoding

不幸的是,StringString? 都不符合它们。

而且,Swift 3 移除了一些隐式类型转换,比如 StringNSString,你需要显式转换它。

请试试这个:

let workEmail = CNLabeledValue(label:"Work Email", value:(emp.getEmail() ?? "") as NSString)
contact.emailAddresses = [workEmail]

或者这个:

if let email = emp.getEmail() {
let workEmail = CNLabeledValue(label:"Work Email", value:email as NSString)
contact.emailAddresses = [workEmail]
}

(也许后者更好,你不应该空输入。)

还有一个,正如 Cesare 所建议的,您最好尽可能使用预定义的常量,例如 CNLabel... 标签:

if let email = emp.getEmail() {
let workEmail = CNLabeledValue(label: CNLabelWork, value: email as NSString)
contact.emailAddresses = [workEmail]
}

关于ios - 如何在 Swift 3 中向 CNMutableContact 添加新电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39648830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com