Swiftでオブジェクトのクラス名を文字列として取得する 質問する

Swiftでオブジェクトのクラス名を文字列として取得する 質問する

次のようにオブジェクトのクラス名を取得しますString

object_getClassName(myViewController)

次のような結果が返されます:

_TtC5AppName22CalendarViewController

純粋なバージョンを探しています:代わりにクラス名のクリーンアップされた"CalendarViewController"文字列を取得するにはどうすればよいですか?

これに関する質問の試みはいくつか見つかりましたが、実際の答えはありませんでした。まったく不可能なのでしょうか?

ベストアンサー1

インスタンスからの文字列:

String(describing: self)

からの文字列:

String(describing: YourType.self)

例:

struct Foo {

    // Instance Level
    var typeName: String {
        return String(describing: Foo.self)
    }

    // Instance Level - Alternative Way
    var otherTypeName: String {
        let thisType = type(of: self)
        return String(describing: thisType)
    }

    // Type Level
    static var typeName: String {
        return String(describing: self)
    }

}

Foo().typeName       // = "Foo"
Foo().otherTypeName  // = "Foo"
Foo.typeName         // = "Foo"

classstructおよびでテスト済みenum

おすすめ記事