gpt4 book ai didi

swift - 检查对象是否是 Swift 中类元类型的实例

转载 作者:搜寻专家 更新时间:2023-10-31 21:49:31 24 4
gpt4 key购买 nike

<分区>

我有一个各种类型的对象数组和一个类型数组。对于每个对象,我想遍历类型数组并查看该对象是否是该类型。像这样:

class Parent {}
class ChildA: Parent {}
class ChildB: Parent {}
class GrandChildA: ChildA {}

var objects: [Any] = ["foo", ChildA(), ChildA(), ChildB(), GrandChildA()]
var classes = [Parent, ChildA, ChildB] // This line doesn't compile!!

for obj in objects {
for cls in classes {
if obj is cls {
NSLog("obj matches type!")
}
}
}

这行不通,因为您不能将类存储在数组中。据我了解,您可以存储类类型,例如 ChildA.self:

ChildA().dynamicType == ChildA.self // true

但这不处理子类:

ChildA().dynamicType == Parent.self // false

显然 is 运算符解决了子类的情况:

ChildA() is Parent // true

但是如果我想使用is,我不知道如何将类类型存储在数组中。

我能否使用 Swift 和一些反射巫术以某种方式完成我想要的事情?

如果标题有误导性,我很抱歉——我对这个问题的理解还不足以形成一个正确的问题。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com