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

Maryam Siddiqui
Maryam Siddiqui
504 Points

Why am I getting this error: super.init isn't called on all paths before returning from initializer

I am confused, the code I have written should be correct.

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

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

class Machine: Point {
  var location: Point

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

  func move(_ direction: String) {
    print("Do nothing! I am a machine!")
  }
}

// Enter your code below

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: break
    }
  }
}

1 Answer

KRIS NIKOLAISEN
KRIS NIKOLAISEN
54,369 Points

You modified the existing code. Change this:

class Machine: Point {

back to this:

class Machine {

The new code you provided below the comment line will pass.