2016-01-29 18 views
11

構造体の名前を迅速に知ることができますか?私は、これはclassが可能です知っている:すぐに構造体名を印刷

class Example { 
    var variable1 = "one" 
    var variable2 = "2" 
} 

このクラス名を印刷し、私は単純にするだろう:

NSStringFromClass(Example).componentsSeparatedByString(".").last! 

を私はstructについても同様に何かを行うことができますか?私が持っている場合は

struct

struct structExample { 
    var variable1 = "one" 
    var variable2 = "2" 
} 

は、どのように私は名前"structExample" このstructを得ることができますか?

ありがとうございました。

答えて

9

あなたはそのselfを求めることができる非インスタンス化構造体の名前が必要な場合:

struct StructExample { 
    var variable1 = "one" 
    var variable2 = "2" 
} 

print(StructExample.self) // prints "StructExample" 

を私はCustomStringConvertibleとdynamicType使用しますたとえば:スウィフト3について

struct StructExample: CustomStringConvertible { 
    var variable1 = "one" 
    var variable2 = "2" 
    var description: String { 
     return "\(self.dynamicType)" 
    } 
} 

print(StructExample()) // prints "StructExample" 

をここではself.dynamicTypeの名前がtype(of: self)に変更されています。

6

この純粋なスウィフトバージョンは、クラスの場合と同じように構造体のために機能します:https://stackoverflow.com/a/31050781/2203005

あなたは型オブジェクト自体に仕事をしたい場合:あなたは構造体のインスタンスがある場合は

let structName = "\(structExample.self)" 

は:

var myInstance = structExample() 
let structName = "\(myInstance.dynamicType)" 

おかしいを十分に返されるTypeオブジェクトは、に準拠していないようですCustomStringConvertibleプロトコルしたがって、パターンには正しいことがありますが、 'description'プロパティはありません。

関連する問題