首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查对象是否为Swift中的给定类型

检查对象是否为Swift中的给定类型
EN

Stack Overflow用户
提问于 2014-06-07 07:04:37
回答 14查看 244.6K关注 0票数 303

我有一个由AnyObject组成的数组。我想遍历它,并找到所有属于数组实例的元素。

如何在Swift中检查对象是否为给定类型?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2014-06-07 07:06:35

如果要对照特定类型进行检查,可以执行以下操作:

代码语言:javascript
复制
if let stringArray = obj as? [String] {
    // obj is a string array. Do something with stringArray
}
else {
    // obj is not a string array
}

你可以用"as!“如果obj不是[String]类型,则会抛出运行时错误

代码语言:javascript
复制
let stringArray = obj as! [String]

您还可以一次选中一个元素:

代码语言:javascript
复制
let items : [Any] = ["Hello", "World"]
for obj in items {
   if let str = obj as? String {
      // obj is a String. Do something with str
   }
   else {
      // obj is not a String
   }
}
票数 337
EN

Stack Overflow用户

发布于 2016-06-16 17:16:14

Swift 2.2 - 5中,您现在可以执行以下操作:

代码语言:javascript
复制
if object is String
{
}

然后过滤你的数组:

代码语言:javascript
复制
let filteredArray = originalArray.filter({ $0 is Array })

如果您有多个类型需要检查:

代码语言:javascript
复制
    switch object
    {
    case is String:
        ...

    case is OtherClass:
        ...

    default:
        ...
    }
票数 243
EN

Stack Overflow用户

发布于 2015-05-31 06:05:17

我有两种方法:

代码语言:javascript
复制
if let thisShape = aShape as? Square 

或者:

代码语言:javascript
复制
aShape.isKindOfClass(Square)

下面是一个详细的例子:

代码语言:javascript
复制
class Shape { }
class Square: Shape { } 
class Circle: Shape { }

var aShape = Shape()
aShape = Square()

if let thisShape = aShape as? Square {
    println("Its a square")
} else {
    println("Its not a square")
}

if aShape.isKindOfClass(Square) {
    println("Its a square")
} else {
    println("Its not a square")
}

立即编辑:3:

代码语言:javascript
复制
let myShape = Shape()
if myShape is Shape {
    print("yes it is")
}
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24091882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档