Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

iOS Protocols in Swift Protocol Basics Protocols With Methods

Evan Bloom
Evan Bloom
2,607 Points

I don't know what I am doing wrong for task 2. I have to set color to the new color. Please help!!!

I am not sure what I am doing wrong.

protocols.swift
// Declare protocol here
protocol ColorSwitchable {
      func switchColor (_ color: Color)
}

enum LightState {
  case on, off
}

enum Color {
  case rgb(Double, Double, Double, Double)
  case hsb(Double, Double, Double, Double)
}

class WifiLamp: ColorSwitchable {
  let state: LightState
  var color: Color

  init() {
    self.state = .on
    self.color = .rgb(0,0,0,0)
  }
}

func switchColor (_ color: Color) {
     self.color = color
}

2 Answers

Chris Stromberg
PLUS
Chris Stromberg
Courses Plus Student 13,389 Points

Check your placement of the following code:

func switchColor (_ color: Color) {
     self.color = color
}
Evan Bloom
Evan Bloom
2,607 Points

Thanks Chris!!

Bharath Chandrashekar
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Bharath Chandrashekar
iOS Development with Swift Techdegree Graduate 12,055 Points

You have done almost everything right. The only thing missed - Your method definition should be within the class and not outside. Something like this:

protocol ColorSwitchable {

    func switchColor(_ color:Color )
}

enum LightState {
    case on, off
}

enum Color {
    case rgb(Double, Double, Double, Double)
    case hsb(Double, Double, Double, Double)
}

class WifiLamp: ColorSwitchable {
    let state: LightState
    var color: Color

    init() {
        self.state = .on
        self.color = .rgb(0,0,0,0)
    }

    func switchColor(_ color: Color) {
        self.color = color
    }
}

The class WifiLamp adopts the ColorSwitchable protocol and hence the method declared in the protocol should be defined inside the WifiLamp class.

Hope this helps.

Evan Bloom
Evan Bloom
2,607 Points

Thanks Bharath Chandrashekar!! It worked!!