【问题标题】:Know if an array contains a type of element知道数组是否包含某种类型的元素
【发布时间】:2017-04-01 11:11:41
【问题描述】:

我正在使用 Swift 3 和 Xcode。

我有一堂课:

class H: SKSpriteNode {...}

还有一个数组:

var array = [H]()

我想用nodes(at:) 函数检查给定点是否存在H 类型的元素。我试过了:

if nodes(at: myPoint).contains(H)

但它不起作用,我明白这一点。有什么方法可以知道 nodes(at) 函数返回的数组是否包含 H 类中的元素?

还有一个问题,如果数组包含具有特定名称的节点,我如何检查函数返回的所有节点?

【问题讨论】:

    标签: arrays swift nodes contains skspritenode


    【解决方案1】:

    尝试使用.filter({ $0 is H }).count > 0.contains(where: { $0 is H })

    【讨论】:

    • 它工作正常,谢谢。而且 .filter({$0.name is "something"}).count > 0 也可以吗?
    • 更好:.contains { $0 is H }
    • 你有任何教程来解释这整个 0 美元的事情吗?我以前从未见过这种符号。根据 Swift,正确的语法是: .contains(where: {$0 is H})
    • 当然。给你link
    • @Drakalex .filter({$0.name is "something"}).count > 0 不起作用,因为比较类而不是值时是“is”。你应该使用 .filter({$0.name == "something"}).count > 0 代替。
    【解决方案2】:

    从 Swift 4.2 开始更新

    //Where
    class H: UIViewController { }
    var myArray: [UIViewController] = [ unknownViewController, anotherUnknown )]
    //Then
    let doesContainH = myArray.contains(where: { $0 is H })
    

    正如 Martin R 指出的,我们现在可以使用 .contains(where: { $0 is Type } )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多