2016-09-16 29 views
2

只需升级到Swift 3.打开并转换我的代码后,我发现了很多错误。其中之一是约CNLabeledValueSwift 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包括电话号码,电子邮件,地址等存储到一个阵列。

任何帮助将不胜感激。

回答

2

使用泛型

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