iOS Build a Simple iPhone App with Swift Getting Started with iOS Development Swift Recap Part 2

josh kinney
josh kinney
1,576 Points

What am I doing incorrectly?

I think this is correct but it is not accepting the code.

robots.swift
class Point {
  var x: Int
  var y: Int

  init(x: Int, y: Int) {
    self.x = x
    self.y = y
  }
}

class Machine {
  var location: Point

  init() {
    self.location = Point(x: 0, y: 0)
  }

  func move(_ direction: String) {
    print("Do nothing! I am a machine!")
  }
}
class Robot: Machine {
            override func move(direction: String){
                switch direction {
                case "Up": location.y += 1
                case "Down": location.y -= 1
                case "Left": location.x -= 1
                case "Right": location.x += 1
                default: "dont move"
                }
            }
        }

1 Answer

Paolo Scamardella
Paolo Scamardella
24,828 Points

Look at the signature of the move method inside Machine class. The signature is ( _ direction: String). You are missing the underscore in Robot move method. When you override a method from the parent class, it needs to have the same signature.

If that along doesn't work, then I would remove case "Right" and substitute it with default: location.x += 1

switch direction {
     case "Up": location.y += 1
     case "Down": location.y -= 1
     case "Left": location.x -= 1
     default: location.x += 1
}
josh kinney
josh kinney
1,576 Points

It was the underscore!!!

Thank you