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

标签 ios swift swift3 cncontact

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

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

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

最佳答案

在 Swift 3 中,CNLabeledValue 声明为:

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

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

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

试试这个:

 let localizedLabel = CNLabeledValue<NSString>.localizedString(forLabel: phoneNumber.label!)

关于ios - 如何在 swift3 中获取 CNLabeledValue 的本地化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38299543/

相关文章:

ios - UIPickers 数据不会从 UITextField 显示

swift - 我如何强制执行 Swift 中的后续案例?

swift - 加载 Swift 库 : "error: no such module"

ios - Swift 3 中的 CoreData NSFetchRequest 错误 NSInvalidArgumentException

ios - 从 iPhone 调用 Azure IoT 中心

ios - 从 SKS 文件加载节点时使用的初始化器

ios - 选择 DatePicker 后更新单元格中的日期(时间)

ios - swift 中不同类型的闭包语法——哪一个是正确的?

ios - Swift - 在静态 UITableView 中滑动以删除(没有删除按钮)

ios - 快照方法在 iPhone 6 设备和模拟器上损坏