0

In Objective-C I always did this:

for (SKSpriteNode *sprite in sprites.children) {

   //Do something for every sprite.
}

But when I try to do the same thing in swift I get problems.

I do it like this:

 for sprite: SKSpriteNode in sprites.children {

   //Do something for every sprite.
  }

This gives me the error: Reference to generic method 'children' is ambiguous without more context

I'm fairly new to swift, I just started learning yesterday, so what am I doing wrong?

Squid
  • 315
  • 1
  • 11

1 Answers1

1

You have to cast the array. I dont know why apple did like this but this is the way to do it:

for sprite in sprites.children as [SKSpriteNode] {
    // If you know for sure that every child is an SKSpritNode
}

// OR

for child in sprites.children {
    if let sprite = child as? SKSpriteNode {
        // To be 100% sure
    }
}
Arbitur
  • 38,684
  • 22
  • 91
  • 128