在Swift 4中,如何获得存储在“Any”类型变量中的数据类型的字符串表示?

时间:2017-12-07 19:15:19

标签: swift types swift4

如果该值存储在“Any”变量中,那么获取值的数据类型的字符串表示的最简单方法是什么?

例如,我正在调试具有此代码的代码......

extension SomeClass : Mappable{

    static func map(value:Any) -> SomeClass{

        return Parse(value)

    }
}

我正在试图找出通过该函数传递的数据类型,但如果我使用type(of :),我会继续获得'Any'而不是其中包含的值。

extension SomeClass : Mappable{

    static func map(value:Any) -> SomeClass{

        let nameOfType = ??? <-- This is what I'm trying to figure out
        log(nameOfType)

        return Parse(value)

    }
}

我只是想将数据类型打印到调试窗口,而不是使用isas进行测试等。这完全是出于日志记录/调试的原因。

3 个答案:

答案 0 :(得分:0)

static func map(value:AnyObject) -> AnyClass{

    return value.classForCoder

}

或者

static func map(value:Any) -> AnyClass{

    return (value as AnyObject).classForCoder

}

答案 1 :(得分:0)

在Swift 4中你可以这样做:

static func map(value: Any) -> Any.Type {
    return type(of: value)
}

答案 2 :(得分:0)

好的,我明白了。这是一个两步的过程。

你必须:

  1. 使用 chown -R www-data:www-data /var/www/html/Projectfolder 获取变量的类型(正如其他人所描述的那样)
  2. 使用type(of:)获取该类型的名称(这是缺失的部分)
  3. 这是一个例子......

    String(describing:)

    这就是我追求的目标。谢谢你的其他答案。希望这有帮助!