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

Receiving a fatal error when running app "Fatal error - array index out of range"

My code for the "Build a playlist browser" app is the same as the source code from the project files. But I am receiving an error when running. I can successfully build the app, but it will crash upon running before loading.

import Foundation
import UIKit


struct Playlist {


    var title: String?
    var description: String?
    var icon: UIImage?
    var largeIcon: UIImage?
    var artists: [String] = []
    var backgroundColor: UIColor = UIColor.clearColor()

    init(index: Int) {
        let musicLibrary = MusicLibrary().library
        let playlistDictionary = musicLibrary[index]  // the error is thrown on this line

        title = playlistDictionary["title"] as! String!
        description = playlistDictionary["description"] as! String!

        let iconName = playlistDictionary["icon"] as! String!
        icon = UIImage(named: iconName)

        let largeIconName = playlistDictionary["largeIcon"] as! String!
        largeIcon = UIImage(named: largeIconName)

        artists += playlistDictionary["artists"] as! [String]

        let colorsDictionary = playlistDictionary["backgroundColor"] as! [String:CGFloat]
        backgroundColor = rgbColorFromDictionary(colorsDictionary)
    }

1 Answer

The crash is happening when you're creating a new Playlist. You're passing the init a value that MusicLibrary().library doesn't have. If you could post the rest of your app's code, I might be able to help figure out why