7

在 swift 2 中,我正在使用CNLabeledValue.localizedStringForLabel(phoneNumber.label)并且工作正常。

在 swift 3 中,我尝试了这一行CNLabeledValue.localizedString(forLabel: phoneNumber.label!)但出现generic parameter 'ValueType' could not be inferred错误

如何在 swift3 中获取 CNLabeledValue 的本地化字符串?

4

1 回答 1

33

在 Swift 3 中,CNLabeledValue声明为:

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

它是一种泛型类型,如果您在适当的上下文中使用它,则无需强制转换它的value. Swift 3 很好地推断出ValueType.

但是在您的代码中,Swift 无法推断ValueType. 这有点烦人,因为ValueType在执行 type 方法时是不必要的。但是 Swift 的类型系统需要指定。如果 Swift 不能推断 的类型ValueType,你可以显式地给出它。

试试这个:

 let localizedLabel = CNLabeledValue<NSString>.localizedString(forLabel: phoneNumber.label!)
于 2016-07-11T11:15:54.447 回答