可以在swift中知道结构的名称吗?我知道这可能是class:
例
class Example {
var variable1 = "one"
var variable2 = "2"
}
Run Code Online (Sandbox Code Playgroud)
打印这个类名,我只想做:
NSStringFromClass(Example).componentsSeparatedByString(".").last!
Run Code Online (Sandbox Code Playgroud)
但我可以做类似的事struct吗?
例
如果我有struct:
struct structExample {
var variable1 = "one"
var variable2 = "2"
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到名称" structExample "这个struct?
谢谢.
aya*_*aio 10
如果您需要非instanciated结构的名称,您可以要求它self:
struct StructExample {
var variable1 = "one"
var variable2 = "2"
}
print(StructExample.self) // prints "StructExample"
Run Code Online (Sandbox Code Playgroud)
对于一个实例,我将使用CustomStringConvertible和dynamicType:
struct StructExample: CustomStringConvertible {
var variable1 = "one"
var variable2 = "2"
var description: String {
return "\(self.dynamicType)"
}
}
print(StructExample()) // prints "StructExample"
Run Code Online (Sandbox Code Playgroud)
关于Swift 3,这里self.dynamicType已经重命名type(of: self)为例子.
纯Swift版本适用于结构类似于类:https://stackoverflow.com/a/31050781/2203005.
如果您想处理类型对象本身:
let structName = "\(structExample.self)"
Run Code Online (Sandbox Code Playgroud)
如果你有一个struct的实例:
var myInstance = structExample()
let structName = "\(myInstance.dynamicType)"
Run Code Online (Sandbox Code Playgroud)
有趣的是,返回的Type对象似乎不符合CustomStringConvertible协议.因此它没有"描述"属性,尽管""模式仍然是正确的.
| 归档时间: |
|
| 查看次数: |
4670 次 |
| 最近记录: |