iOS Functions in Swift Adding Power to Functions Returning Complex Values

Sapho Maqhwazima
Sapho Maqhwazima
805 Points

Hi guys, I have tried everything, please clarify and assist here, thanks.

func getTowerCoordinates (location: String) -> (Double, Double) { switch location { case "Eiffel Tower": return (48.8582, 2.2945) case "Great Pyramid": return (29.9792, 31.1344) case "Sydney Opera House": return (33.8587, 151.2140) default: return (0,0) } }

functions.swift
// Enter your code below
func getTowerCoordinates (location: String) -> (Double, Double) {
    switch location {
    case "Eiffel Tower": return (48.8582, 2.2945)
    case "Great Pyramid": return (29.9792, 31.1344)
    case "Sydney Opera House": return (33.8587, 151.2140)
    default: return (0,0)
}
}

2 Answers

Jason Anders
MOD
Jason Anders
Treehouse Moderator 144,813 Points

Hi Sapho,

You've got the correct syntax, but you did not follow the instructions of the task correctly. Instructions are very strict, and everything must be exactly as asked or the challenge will receive the Bummer!.

Here, there are two things. The instructions say:

Declare a function named coordinates that takes a single parameter of type String, with an external name for, a local name of location, and returns a tuple containing two Double values

So, you are missing the "external name" of for for the parameter, and the function is not named correctly... it should be named coordinates.
Once you fix up those two things, the challenge will pass.

Keep Coding! :) :dizzy:

Hi Sapho,

You have just made a few simple mistakes.

Firstly, the challenge asks you to create a function name coordinates not getTowerCoordinates. This should look like this:

func coordinates(for location: String)

You have then forgotten to add an external name ' for' which should be added just before the local name of 'location':

func coordinates(for location: String) -> (Double, Double) {

Your switch statement however is spot on, well done!

Overall the solution to this challenge should look like this:

func coordinates(for location: String) -> (Double, Double) {
  switch location {
    case "Eiffel Tower": return (48.8582, 2.2945)
    case "Great Pyramid": return (29.9792, 31.1344)
    case "Sydney Opera House": return (33.8587, 151.2140)
    default: return (0,0)
  }
}

In Xcode, your solution would work, however it isn't the solution the challenge was looking for. Perhaps go over parameter labels again.

All the best,

Mitch