【问题标题】:How to determine if two objects are of the same type in Swift [duplicate]如何在Swift中确定两个对象是否属于同一类型[重复]
【发布时间】:2017-05-08 18:19:17
【问题描述】:

过去有很多与此相关的问题,但我能找到的所有问题都是针对您想要确定对象是否属于某种类型的类 (if myClassInstance is MyClassType {...})。

我想知道如何确定对象 A 和对象 B 是否属于同一类类型,而无需知道/指定该类型是什么。

【问题讨论】:

  • 您不能尝试将一个对象分配给另一个对象或查看它们是否相等吗?如果成功,则它们属于同一类型。
  • 具体看上面链接问答的这个答案:stackoverflow.com/a/40113416/2976878
  • A.dynamicType === B.dynamicType ?
  • 就像type(of: A) == type(of: B)一样简单
  • @Rahul .dynamicType 已在 Swift 3 中更改为 type(of:)

标签: swift


【解决方案1】:

我的立场已得到纠正 - .classForCoder 仅适用于符合 NSObjectProtocol 的类型。

有更好的答案。

这可能会满足您的需求...

class MyClassTypeA: NSObject {

}

class MyClassTypeB: NSObject {

}

var a = MyClassTypeA()
var b = MyClassTypeB()
var c = MyClassTypeB()

print(a.isKind(of: b.classForCoder))
print(a.isKind(of: c.classForCoder))
print(b.isKind(of: c.classForCoder))

【讨论】:

  • 这仅适用于符合NSObjectProtocol的类型。
猜你喜欢
  • 2021-03-06
  • 1970-01-01
  • 2022-07-23
  • 1970-01-01
  • 2023-04-09
  • 2012-04-29
  • 2020-06-15
  • 1970-01-01
  • 2014-09-17
相关资源
最近更新 更多