Swift2 如何循环遍历结构的类子级?

Swift2 如何循环遍历结构的类子级?,swift2,Swift2,我有一张这样的清单。我可以通过电话逐一查询这些项目 struct List { class Item1: Holdable, Throwable { var property1 = "A" var property2 = "B" } class Item2: Holdable { var property2 = "A" var property3 = "B" } class Item3:

我有一张这样的清单。我可以通过电话逐一查询这些项目

struct List {
    class Item1: Holdable, Throwable {
        var property1 = "A"
        var property2 = "B"
    }

    class Item2: Holdable {
        var property2 = "A"
        var property3 = "B"
    }

    class Item3: Throwable, Catchable {
        var property4 = "A"
        var property5 = "B"
    }
}

但是,如果我想要所有可保存的项目,我如何才能获得它们呢?

看看这个“自我解释”的例子

List.Item1()
这根本不应该编译

struct S {
    class A{}
    class B{}
    struct C{}
}

let a = S.A.self    // S.A.Type
let b = S.B()       // instance of S.B class
let c = S.C()       // instance of S.C struct
let s = S()         // instance of struct S without any property

看看这个“不言自明”的例子

List.Item1()
这根本不应该编译

struct S {
    class A{}
    class B{}
    struct C{}
}

let a = S.A.self    // S.A.Type
let b = S.B()       // instance of S.B class
let c = S.C()       // instance of S.C struct
let s = S()         // instance of struct S without any property

我试过镜像,但似乎不起作用。@demirb将您的结构看作是一个名称空间,您可以在其中声明一些类。您的结构完全没有属性。List.Item1只提供编译器错误。让i1Type=List.Item1.self为您提供一个List.Item1.Type,让i1=List.Item1()为您提供该类型的实例。仅此而已……我在“List.Item1”的末尾添加了一个“()”。只是错过了。但事实并非如此。我已经能够逐一访问这些项目。但我想循环浏览100个项目。我能想到的唯一解决方案是将所有这些类放在不同类型的数组中,并调用这些数组,这是一项额外的工作。如果只有一种方法可以将其转换为可访问对象,那就太好了。@demibr据我所知,没有其他运行时方法可以做到这一点,对不起。。。如果不创建结构,它只存在于源文件中。即使您创建了它,它也没有属性,并且您的类声明也只存在于源文件中。现在我可以很容易地使用map/filter。但是,当我需要添加一个新的类obj时,我必须将它添加到两个不同的位置:/我尝试了镜像,但这似乎不起作用。@demirb将您的结构看作是一个命名空间,您可以在其中声明一些类。您的结构完全没有属性。List.Item1只提供编译器错误。让i1Type=List.Item1.self为您提供一个List.Item1.Type,让i1=List.Item1()为您提供该类型的实例。仅此而已……我在“List.Item1”的末尾添加了一个“()”。只是错过了。但事实并非如此。我已经能够逐一访问这些项目。但我想循环浏览100个项目。我能想到的唯一解决方案是将所有这些类放在不同类型的数组中,并调用这些数组,这是一项额外的工作。如果只有一种方法可以将其转换为可访问对象,那就太好了。@demibr据我所知,没有其他运行时方法可以做到这一点,对不起。。。如果不创建结构,它只存在于源文件中。即使您创建了它,它也没有属性,并且您的类声明也只存在于源文件中。现在我可以很容易地使用map/filter。但是,当我需要添加一个新的类obj时,我必须将它添加到两个不同的位置:/I看不出这是如何回答问题的。@特洛伊敌人,请参阅OP问题下方的注释。我看不到这是如何回答问题的。@特洛伊敌人,请参阅OP问题下方的注释。