SKNode可以有userData来存储任意数据。
我在两个SKNodes上设置了属性“isEvil”。然后我想检查两个节点是否都是邪恶的。

var hero = SKNode()
hero.userData = ["isEvil": false]

var enemy = SKNode()
enemy.userData = ["isEvil": true]

if hero.userData!["isEvil"] == enemy.userData!["isEvil"] {
  println("the here and the enemy are equally evil!")
}

if行给出一个错误:Type 'AnyObject?' does not conform to protocol '_RawOptionSetType'
我该如何比较这些值?
根据docs,SKNode.userData是NSMutableDictionary?。因为它是可选的,所以我肯定会使用!展开值。

最佳答案

userData是一个NSMutableDictionary。这对我有效:

if hero.userData!.objectForKey("isEvil") as Bool == enemy.userData!.objectForKey("isEvil") as Bool

编辑:正如@DonnyP所指出的,它可以写得更简单:
if hero.userData!["isEvil"] as Bool == enemy.userData!["isEvil"] as Bool

关于ios - 比较SKNode的userData会给出错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27587177/

10-16 22:24