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 Properties Getter and Setter Methods

Ricardo Gonzalez
Ricardo Gonzalez
2,286 Points

How do i do the setter part?

Got lost after I try to do the setter part of the challenge.

Temperature.swift
class Temperature {
    var celsius: Float = 0.0
    var fahrenheit: Float {
       get {
       return (celsius * 1.8) + 32.0
       }
    } 
    set {
    celsius = newValue
    farenheit = newValue
    }
}

1 Answer

Hi Ricardo,

I hope below info helps.

1) I would say that first you need to put your setter method within the scope of your computed property. In other words within the curly braces that define fahrenheit

2) Second remember that you are working with a computed property, and you are not storing a value like for example the variable celcious. So farenheit = newValue maybe incorrect. Now playground may suggest to use self.farenheit = newValue instead, but then again this maybe odd since you are retuning the result of a calculation.

3) Also you misspelled the name of your computed property instead of fahrenheit you used farenheit, so you may need to correct that.

4) See below code.

lass Temperature {
    var celsius: Float = 0.0
    var fahrenheit: Float {
        get {
            return (celsius * 1.8) + 32.0
        }

        set {
            celsius = newValue
            //self.fahrenheit = newValue
        }
    }


}
Ricardo Gonzalez
Ricardo Gonzalez
2,286 Points

Look here is the question of the challenge and i try doing what you told me to do but it didn't work so maybe you can figure out what it is that i got to do and now that you know what the questions is then maybe you can figure it out.

We need to add getter and setter methods to the fahrenheit property of the Temperature class. Add a getter method to the access the value of the fahrenheit property. Then add a setter method. When the user assigns a value to the fahrenheit property, the setter method will calculate and assign a value to the celsius property. (Note: Celsius = (Fahrenheit-32)/1.8))

Hi Ricardo,

Thanks for the additional info. Below is what you should do. newValue will be the value that will be converted from Fahrenheit into Celsius, and then assigned to the variable Celsius after being converted by the formula ((newValue - 32) / 1.8). Try below and let me know..

class Temperature {
    var celsius: Float = 0.0
    var fahrenheit: Float {
    get {
        return (celsius * 1.8) + 32.0
        }

        set { 
               celsius = ((newValue - 32) / 1.8)


        }
    }    
}
Ricardo Gonzalez
Ricardo Gonzalez
2,286 Points

It work! Thanks for your help i appreciate it. :)