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 trialNicklas Lind
3,619 PointsIs this an error in the Arrays challenge? (Swift Basics)
Hello,
I was trying to solve the challenge:
"Now that we have to fix bugs in out app we cannot deploy it. Please remove the third item (βDeploy Appβ) and assign it to a constant named item."
I found a solution, but I don't understand why the number of the index is 1, not 2.
Here is the code and solution:
var todo = ["Learn Swift", "Build App", "Deploy App"]
todo.append("Debug App")
todo.append("Fix bugs")
todo.removeAtIndex(1)
let item = todo.removeAtIndex(1)
I am aware that the index starts at 0, 1, 2, 3 etc, which is why I am confused :) Should the number in the removeAtIndex be 2?
Can someone tell me what's going on here?
Thanks in advance,
Nicklas
3 Answers
Chris Shaw
26,676 PointsHi Nicklas,
Let's start with the first issue which is you're removing the second value Build App from the array then removing Deploy App and assigning it correctly but because Build App no longer exists the challenge will fail, instead you just want to assign the value Deploy App to the constant item
by selecting the 2nd index in the array which is the 3rd item as array's always start at zero as we know.
var todo = ["Learn Swift", "Build App", "Deploy App"]
todo.append("Debug App")
todo.append("Fix bugs")
let item = todo.removeAtIndex(2)
You can also do the following instead of appending each item manually...
todo += ["Debug App", "Fix bugs"]
So let's put the indexes into perspective.
var todo = [
"Learn Swift", // 0
"Build App", // 1
"Deploy App", // 2
"Debug App", // 3
"Fix bugs" // 4
]
The easiest way I always find to remember which index something lives at is by counting from one and then misusing one less from the total instead of counting from zero which can get confusing, it just comes down to which you prefer to remember the index.
Hope that helps.
gabriel siqueira
7,405 PointsFrom Chris explanation the code should be
var todo = ["Learn Swift", "Build App", "Deploy App"]
todo.append("Debug App") todo.append("Fix Bugs")
todo.removeAtIndex(3)
let item = todo.removeAtIndex(3)
But for the challenge to work you have to use the one Nicklas used
var todo = ["Learn Swift", "Build App", "Deploy App"]
todo.append("Debug App") todo.append("Fix Bugs")
todo.removeAtIndex(1)
let item = todo.removeAtIndex(1)
That got me confused as well...
Yusuf Diyab
2,485 Pointsvar todo = ["Learn Swift", "Build App", "Deploy App"]
todo += ["Debug App","Fix Bugs"]
let item = todo.removeAtIndex[2]
Still do get this error Bummer! You need to call the 'removeAtIndex' method on the array.