Swift 3:CNLabeledValue作为参数

时间:2016-09-16 22:39:20

标签: swift3

只需升级到Swift 3.打开并转换我的代码后,我发现了很多错误。其中一个是关于CNLabeledValue

使用Swift 2.3,它适用于:

func myFunc(contactItems: [CNLabeledValue]) -> String {
    ....
}

使用Swift 3,它会给出错误消息:

  

对泛型类型'CNLabeledValue'的引用需要参数   < ...>

用XCode修复后,它改为:

func myFunc(contactItems: [CNLabeledValue<AnyObject>]) -> String {
    ....
}

但是,XCode通过此修复程序给出了错误消息:

  

类型'AnyObject'不符合协议'NSCopying'。

我知道错误是因为泛型类型,但我不知道如何使用CNLabeledValue声明。我的目的是将所有CNLabeledValue(包括电话号码,电子邮件,地址等)存储到一个阵列中。

任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

使用泛型

func myFunc<T: NSCopying>(contactItems: [CNLabeledValue<T>]) -> String {
  ...
}