-2

I figure out a problem when I try to call a function in my class.

I get an error :

Variable 'team' used before being initialized

I didn't understand why 'cause I respect the class initialization according to the two-phase process.

Teams.swift

class Team {
var number: Int
var personages: [CharacterC]
var playerName: String
var isOver: Bool {
    var numberOfDeadPersonages = 0
    for perso in personages where perso.isdead {
        numberOfDeadPersonages += 1
    }
    return numberOfDeadPersonages == personages.count
}

init(number: Int, personages: [CharacterC], playerName: String) {
    self.number = number
    self.personages = personages
    self.playerName = playerName
}

    func createTeams() {

    / Creation of each team /
    print("Let's get started, create the two teams which will compete")
    game = Game(team1: createNewTeam(number: 1), team2: createNewTeam(number: 2))

    / Creation of character of the team n°1 /
    print("\(game.team1.playerName), I'm pretty sure you can set up the best team let's figure it out")
    for personnageNumber in 1...3 {
        game.team1.personages.append(createNewPersonage(number: personnageNumber, inGame: game))
    }

    / Creation of character of the team n°2 /
    print("\(game.team2.playerName), use your advantage wisely, you can counter him")
    for personnageNumber in 1...3 {
        game.team2.personages.append(createNewPersonage(number: personnageNumber, inGame: game))
    }

    print("Now that the teams are set up, you're only goal is to defeat the ennemy team, good luck")
}

main.swift

var game: Game
var team: Team



createTeams()
gameOver()

Any idea guys ?

Danyl
  • 2,012
  • 3
  • 19
  • 40

1 Answers1

1

You did declare team, but you didn't actually initialize it to a value. So, you cannot call any (non-static) function of team before initializing it:

var team = Team(number:..., personages:..., playerName:...)
team.createTeams()

(Replace ... by whichever values you have)

Anis R.
  • 6,656
  • 2
  • 15
  • 37