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 Functions in Swift Adding Power to Functions Returning Complex Values

Noah Belmont
seal-mask
.a{fill-rule:evenodd;}techdegree
Noah Belmont
iOS Development Techdegree Student 811 Points

I believe my answer is correct but I am getting an error saying make sure you accept a single parameter of type String

I can not figure out what is wrong with my syntax, but the system says that I have an error with decleration

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

  }

2 Answers

andren
andren
28,558 Points

There are three minor issues:

  1. The instructions specify that the parameter should have an external name of for, you have not given the parameter that external name. That is the cause of the current error.

  2. The challenge specifics that you don't need to name the return values, but in reality you actually must not name the return values, doing so will not allow you to pass the challenge.

  3. You forgot colons after the case conditions in your switch statement for all of the cases other than default. Also you don't need "location: " in your cases, only the string the location is meant to match.

If you fix those three isusses like this:

// Enter your code below
func coordinates(for location: String) -> (Double, Double) { // Added for as an external parameter name and removed return names
  switch location {
    case ("Eiffel Tower"): return (48.8582, 2.2945) // Added colon after parenthesis and removed "Location: "
    case ("Great Pyramid"): return (29.9792, 31.1344) // Added colon after parenthesis and removed "Location: "
    case ("Sydney Opera House"): return (33.8587, 151.2140) // Added colon after parenthesis and removed "Location: "
    default: return (0, 0)
  }
}

Then your code will work.

Noah Belmont
seal-mask
.a{fill-rule:evenodd;}techdegree
Noah Belmont
iOS Development Techdegree Student 811 Points

Thank you for the great explanation of what the solutions were and why they are the solutions, as well as the fast response. Very helpful