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

Darius Moravcik
Darius Moravcik
6,879 Points

How can I create custom initiliazer?

I've tried different methods, but can't get this code to work. As far as I can tell, I am creating a custom initializer, but I keep getting an error saying: Don't use member-wise initializer, but create a custom....

Any idea what I'm doing wrong?

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, description: String) {
        self.red = 86.0
        self.green = 191.0
        self.blue = 131.0
        self.alpha = 1.0
        self.description = "red: \(red), green: \(green), blue: \(blue), alpha: \(alpha)"

    }
}

2 Answers

David Lin
David Lin
35,864 Points

You don't need "description" as an input parameter, since it is composed by the other input parameter values. Also, don't "hard-code" set values to the struct's properties. Just assign the input parameter values to them.

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: \(self.red), green: \(self.green), blue: \(self.blue), alpha: \(self.alpha)"
    }
}
Darius Moravcik
Darius Moravcik
6,879 Points

Oh that makes much more sense now. Thank you for the explanation.

David Lin
David Lin
35,864 Points

You're welcome! Cheers!