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 Object-Oriented Swift 2.0 Complex Data Structures Custom Initializers

Eleanor Campbell
Eleanor Campbell
8,630 Points

How make a custom initializer?

So I am trying to pass this challenge that is asking for a custom initializer. I put in:

init(red: Double, green: Double, blue: Double, alpha: Double, description: String) { self.red = red self.green = green self.blue = blue self.alpha = alpha self.description = "red: " + red + ", green: " + green + ", blue: " + blue + ", alpha: " + alpha }

it's telling me I haven't made a custom initializer. what am I doing wrong?

structs.swift
struct RGBColor {
    let red: Double
    let green: Double
    let blue: Double
    let alpha: Double

    let description: String

    // Add your code below
     init(red: Double, green: Double, blue: Double, alpha: Double, description: String)
    {
    self.red = red
    self.green = green
    self.blue = blue
    self.alpha = alpha
    self.description = "red: " + red + ", green: " + green + ", blue: " + blue + ", alpha: " + alpha
    }
}

1 Answer

Tobias Helmrich
Tobias Helmrich
31,603 Points

Hey Nan,

I can see two problems in your code. Firstly the challenge only wants you to use the initializer assign values for the first four properties but you also used the fifth property description.

The other problem is that if you want to write an integer in a string in Swift you have to use string interpolation and not concatenation like you do now.

So if you write your code like this

struct RGBColor {
    let red: Double
    let green: Double
    let blue: Double
    let alpha: Double

    let description: String

    // Add your code below
    init(red: Double, green: Double, blue: Double, alpha: Double){
      self.red = red
      self.green = green
      self.blue = blue
      self.alpha = alpha
      self.description = "red: \(red), green: \(green), blue: \(blue), alpha: \(alpha)"
    }
}

it should work. I hope that helps and if you have any further questions feel free to ask! :)

Good luck!