在Swift中获取类型的所有嵌套类型(作为元类型引用)

时间:2019-05-06 05:44:33

标签: swift dynamic reflection runtime introspection

我在Swift中有一些嵌套的类定义,例如:

jfx

是否可以内省此层次结构以自动从中获取元类型数组,就像这样,但是在运行时:

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">

<TextView
    android:id="@+id/titleTxt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="72dp"
    android:text="PROFILE"
    android:textSize="15sp"
    android:textStyle="bold"
    app:layout_constraintBottom_toBottomOf="@+id/editBtn"
    app:layout_constraintEnd_toStartOf="@+id/editBtn" />

<TextView
    android:id="@+id/editBtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"
    android:layout_marginEnd="30dp"
    android:text="Edit"
    android:textColor="@android:color/black"
    android:textSize="20sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

2 个答案:

答案 0 :(得分:0)

您可以使用type(of:)

var arr = [Any]()

arr.append(Animal.Bird())
arr.append(Animal.Mammal.Tiger())
arr.append(Animal.Mammal.Tiger())
arr.append(Animal.Mammal.Wolf())

for animal in arr {
    print(type(of: animal.self))
}

输出

  


  老虎
  老虎
  狼

答案 1 :(得分:0)

我认为您可以为此使用Mirroring: https://developer.apple.com/documentation/swift/mirror