首页 > 解决方案 > 在 Swift 中将泛型数据类型的变量转换为 String

问题描述

我有一个泛型类,其中包含一个泛型数据类型的变量。我需要将此变量转换为字符串。

示例代码 -

class test<T> {
var value:T!
var name: String!

  init(text: String, val: T)
  {
    name = text
    value = val
  }

  func toString() -> String {
    let temp = value as! String
    //let temp = String(value)
    return name + ": " + temp 
  }
}

我尝试通过let temp = value as 来向下转换它!字符串,但它会在运行时导致崩溃

执行let temp = String(value)throws 无法使用类型为“(T?)”的参数列表调用类型“String”的初始化程序构建错误

标签: swiftgenericstype-conversion

解决方案


您可以使用字符串插值将其包含value在字符串中。

class Test<T> {
    var value:T
    var name: String

    init(text: String, val: T) {
        name = text
        value = val
    }

    func toString() -> String {
        return "\(name): \(value)"
    }
}

与您的问题无关,但不要将任何变量声明为隐式展开的 Optionals(!在它们的类型之后),尤其是当您在初始化程序中设置它们时。您还应该遵守 Swift 命名约定,即类型 ( Test) 的 UpperCamelCase。


推荐阅读