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

I am still not able to understand the function of initializers completely. Please help

Hi,

Can you help me figure out the problem with the code I have written? If I initialize description, I get an error saying dont do a memberwise initializer like SWIFT. If i dont initialize description I get error saying description not initialized.

Please help

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

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


    func getDesc() -> String {
      description = "red: \(red), green: \(green), blue: \(blue), alpha: \(alpha)"
      return description
    }

    // Add your code below

}

let abc = RGBColor(red: 86.0, green: 191.0, blue: 131.0, alpha: 1.0)
let def = abc.getDesc()
print(def)

1 Answer

You are close. It's just that you are trying to initialize description in the function, rather than in the initializer:

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    
      description = "red: \(red), green: \(green), blue: \(blue), alpha: \(alpha)"  //here, as part of the initializer
    }

}