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 Classes Classes with Custom Types

It says Springfield cannot be used on type Business. But I thought Business was a class of both type name and location.

Maybe I am just not doing it right. i tried to just put self.location = (location: x, location: y) or something like that in the initializer so I didn't have to make an instance of location. I would think either way would work. Just not sure what Im not getting here

classes.swift
struct Location {
    let latitude: Double
    let longitude: Double
}
class Business
{
let name: String
let location: Location

init(name: String, location: Location)
{
self.name = name
self.location = location
}
let springfield: Location = Location.init(latitude: 13, longitude: 13)
let someBusiness = Business.init(name: "LevicorP", location: springfield)
}

1 Answer

It looks as if you are very close on this one. If you look at your two lines of code...

let springfield: Location = Location.init(latitude: 13, longitude: 13)
let someBusiness = Business.init(name: "LevicorP", location: springfield)

...and carefully check the curly brackets, you'll see these two lines are inside the definition of the Business class. Move them outside and it should work. If you indent the code inside curly brackets (XCode should do this for you), it makes this more obvious.

It still says the following: swift_lint.swift:17:62: error: instance member 'springfield' cannot be used on type 'Location' let someBusiness = Business.init(name: "LevicorP", location: springfield)}

It still says the following: swift_lint.swift:17:62: error: instance member 'springfield' cannot be used on type 'Location' let someBusiness = Business.init(name: "LevicorP", location: springfield)}

It's working for me using this code...

struct Location {
    let latitude: Double
    let longitude: Double
}

class Business {
  let name: String
  let location: Location

  init(name: String, location: Location) {
    self.name = name
    self.location = location
  }
}

let springfield: Location = Location.init(latitude: 13, longitude: 13)
let someBusiness = Business.init(name: "LevicorP", location: springfield)

From the errors you're posting, it sounds as if you still have those last two lines inside the Business class.