当前位置:  开发笔记 > IOS > 正文

如何知道对象是否是子类或超类的实例

如何解决《如何知道对象是否是子类或超类的实例》经验,为你挑选了2个好方法。

我有2个班:

class Parent
{
  func a() {
     self.b()
  }
  func b() {
     // I want to check here
     if self is Parent  // warning "'is' test is always true"
     {
        log("instance of parent")
     }
  }
}
class Child:Parent
{
}

我想这样检查一下

//
var child = Child()
child.a()  // don't see log
var parent = Parent()
parent.a()  // see log

我知道我可以description在超类中创建一个方法,并在子类中覆盖它.我想知道Swift是否可以在没有工具的情况下检查它description

谢谢你的帮助



1> Uros19..:

它非常简单,使用is 关键字.

if child is Child



2> Jordan H..:

这可以使用as类型转换操作符来完成:

var child = Child()

if let child = child as? Child {
    //you know child is a Child
} else if let parent = child as? Parent {
    //you know child is a Parent
}

还有is关键字:

if child is Child {
    //is a child
}

请注意,在你的代码,你看到使用警告is-它永远是真实的,因为相比selfParent 从内部Parent总是会true.如果您将它与某个类的其他实例进行比较而不是self,或者如果您正在与其他类型进行比较Parent,则此警告将消失.

我建议在iBooks商店的Swift Programming Language一书中阅读更多相关内容 - 请参阅Type Casting一章.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有