SKNode可以使用userData来存储任意数据。
我设置了属性" isEvil"在两个SKNodes上。然后我想检查两个节点是否都是邪恶的。
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?
。由于它是可选的,我确定使用!
打开值。
答案 0 :(得分:1)
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
答案 1 :(得分:1)
尝试此操作...如果isEvil
未定义,userData
为nil
,和/或isEvil
不是Bool
,则会处理}:
if hero.userData?["isEvil"] as? Bool == enemy.userData?["isEvil"] as? Bool {
println("the hero and the enemy are equally evil!")
}