If you use simple categories, with each physical body belonging to only one category, then this alternative didBeginContact form may be more readable:
func didBeginContact(contact: SKPhysicsContact) {
let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
switch contactMask {
case categoryBitMask.ball | categoryBitMask.something:
print("Collision between ball and something")
let ballNode = contact.bodyA.categoryBitMask == categoryBitMask.ball ? contact.bodyA.node! : contact.bodyB.node!
ballNode.pop()
score += 10
default :
print("Some other contact")
}
}
, , , AND (categoryBitMask.ball | categoryBitMask.something) .